Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Prośba o sprawdzenie poprawności
Forum PHP.pl > Forum > PHP
It_maniac
Od pewnego czasu próbóję przepisać kod z Actionscript do kodu php, funkcja działa, jednak nie daje poprawnych danych wyjściowych - wygenerowane stringi różnią się, dlatego proszę o sprawdzenie fukcji w php...

Actionscript
Kod
public static function decrypt32byte(param1:String, param2:int, param3:int, param4:int = 11, param5:int = 77213, param6:int = 81371, param7:int = 17, param8:int = 92717, param9:int = 192811) : String
        {
            var _loc_17:int = 0;
            var _loc_18:int = 0;
            var _loc_19:String = null;
            var _loc_20:String = null;
            var _loc_10:* = new Array();
            _loc_10 = string2bin(param1);
            var _loc_11:int = 256;
            var _loc_12:* = new Array();
            var _loc_13:int = 0;
            while (true)
            {
                
                param2 = (param2 * param4 + param5) % param6;
                param3 = (param3 * param7 + param8) % param9;
                _loc_12[_loc_13] = (param2 + param3) % (_loc_11 * 0.5);
                _loc_13++;
            }
            _loc_13 = _loc_11;
            while (true)
            {
                
                _loc_17 = _loc_12[_loc_13];
                _loc_18 = _loc_13 % (_loc_11 * 0.5);
                _loc_19 = _loc_10[_loc_17];
                _loc_10[_loc_17] = _loc_10[_loc_18];
                _loc_10[_loc_18] = _loc_19;
                _loc_13 = _loc_13 - 1;
            }
            _loc_13 = 0;
            while (true)
            {
                
                _loc_10[_loc_13] = _loc_10[_loc_13] ^ _loc_12[_loc_13 + _loc_11] & 1;
                _loc_13++;
            }
            var _loc_14:* = _loc_10.join("");
            var _loc_15:* = new Array();
            _loc_13 = 0;
            while (true)
            {
                
                _loc_20 = _loc_14.substr(_loc_13, 4);
                _loc_15.push(_loc_20);
                _loc_13 = _loc_13 + 4;
            }
            var _loc_16:* = bin2String(_loc_15);
            return bin2String(_loc_15).toString();
        }// end function

        private static function string2bin(param1:String) : Array
        {
            var _loc_4:String = null;
            var _loc_2:* = new Array();
            var _loc_3:int = 0;
            while (true)
            {
                
                _loc_4 = param1.charAt(_loc_3);
                _loc_3++;
            }
            _loc_2 = _loc_2.join("").split("");
            return _loc_2;
        }// end function

        private static function bin2String(param1:Array) : String
        {
            var _loc_4:String = null;
            var _loc_2:* = new Array();
            var _loc_3:int = 0;
            while (true)
            {
                
                _loc_4 = param1[_loc_3];
                _loc_3++;
            }
            return _loc_2.join("");
        }// end function


Kod Php
  1. function decrypt32byte($str, $key1, $key2)
  2. {
  3. $reg1 = array();
  4. for($reg3=0; $reg3<strlen($str); $reg3++)
  5. {
  6. $reg0 = $str[$reg3];
  7. switch($reg0)
  8. {
  9. case '0': $reg1[] = '0000'; break;
  10. case '1': $reg1[] = '0001'; break;
  11. case '2': $reg1[] = '0010'; break;
  12. case '3': $reg1[] = '0011'; break;
  13. case '4': $reg1[] = '0100'; break;
  14. case '5': $reg1[] = '0101'; break;
  15. case '6': $reg1[] = '0110'; break;
  16. case '7': $reg1[] = '0111'; break;
  17. case '8': $reg1[] = '1000'; break;
  18. case '9': $reg1[] = '1001'; break;
  19. case 'a': $reg1[] = '1010'; break;
  20. case 'b': $reg1[] = '1011'; break;
  21. case 'c': $reg1[] = '1100'; break;
  22. case 'd': $reg1[] = '1101'; break;
  23. case 'e': $reg1[] = '1110'; break;
  24. case 'f': $reg1[] = '1111'; break;
  25. }
  26. }
  27. $reg1 = join($reg1);
  28. $reg6 = array();
  29. for($reg3=0; $reg3<384; $reg3++)
  30. {
  31. $key1 = ($key1 * 11 + 77213) % 81371;
  32. $key2 = ($key2 * 17 + 92717) % 192811;
  33. $reg6[] = ($key1 + $key2) % 128;
  34. }
  35. for($reg3=256; $reg3>=0; $reg3--)
  36. {
  37. $reg5 = $reg6[$reg3];
  38. $reg4 = $reg3 % 128;
  39. $reg8 = $reg1[$reg5];
  40. $reg1[$reg5] = $reg1[$reg4];
  41. $reg1[$reg4] = $reg8;
  42. }
  43. for($reg3=0; $reg3<128; $reg3++)
  44. $reg1[$reg3] = $reg1[$reg3] ^ ($reg6[$reg3+256] & 1);
  45. $reg12 = $reg1;
  46. $reg7 = array();
  47. for($reg3=0; $reg3<strlen($reg12); $reg3+=4)
  48. {
  49. $reg9 = substr($reg12, $reg3, 4); $reg7[] = $reg9;
  50. }
  51. $reg2 = array();
  52. for($reg3=0; $reg3<count($reg7);$reg3++)
  53. {
  54. $reg0 = $reg7[$reg3];
  55. switch($reg0)
  56. {
  57. case '0000': $reg2[] = '0'; break;
  58. case '0001': $reg2[] = '1'; break;
  59. case '0010': $reg2[] = '2'; break;
  60. case '0011': $reg2[] = '3'; break;
  61. case '0100': $reg2[] = '4'; break;
  62. case '0101': $reg2[] = '5'; break;
  63. case '0110': $reg2[] = '6'; break;
  64. case '0111': $reg2[] = '7'; break;
  65. case '1000': $reg2[] = '8'; break;
  66. case '1001': $reg2[] = '9'; break;
  67. case '1010': $reg2[] = 'a'; break;
  68. case '1011': $reg2[] = 'b'; break;
  69. case '1100': $reg2[] = 'c'; break;
  70. case '1101': $reg2[] = 'd'; break;
  71. case '1110': $reg2[] = 'e'; break;
  72. case '1111': $reg2[] = 'f'; break;
  73. }
  74. }
  75. return join($reg2);
  76. }
wookieb
Temat: Jak poprawnie zatytulowac watek
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.