我有这个需要转换的AS3类:
public class decrypt {
static const each:Array = new Array([-1472138623, 878922361, -1110917592, 1826394737, 1030846636, 217728939, -379917437, -275132097, 1767307091, -1195948886, -682829029, 95838200, -2061993620, 149857669], [-1020757973, -2077877836, 501378647, -259185914, -552298551, -2022558100, 289023736, -769360169, 290347576, 2140291152, 289023736, -769360169, -1624536668, -554327313, -1471319910, 1589545115, -1818914025, -690206676, 400482224, 1628417421, -39094471, -1572489861, -1233920875, 929897812, 1510659349, 53240083, 1392835656, 2121191360, -653167482, -1507569495, -1020971252, -163502559], [-1342432177, 1704770503, -1713368805, 639561550, 1540369766, 1219510839, -527278624, 1281025686, 336464845, 246475111, 5783626, -1178158347, 1131157072, -618389383]);
static const each2:Array = new Array([1465852829, 35371303, -307080369, 1689322742], [-850493536, -1811866893, 1569332413, 2134615290], [-15985840, -327516657, 258826066, 671668905]);
public static function decrypt(_arg1:int, _arg2:int):String{
var _local3:String;
var _local4:int;
var _local5:int;
var _local6:int;
var _local7:int;
var _local8:*;
var _local9:*;
_local3 = "";
_local4 = 0;
_local5 = each[((_arg1 - 5) ^ -614)].length;
while (_local4 < _local5) {
_local6 = int(each[((_arg1 - 5) ^ -614)][_local4]);
_local4++;
_local7 = int(each[((_arg1 - 5) ^ -614)][_local4]);
_local8 = 2654435769;
_local9 = 84941944608;
while (_local9 != 0) {
_local7 = (_local7 - ((((_local6 << 4) ^ (_local6 >>> 5)) + _local6) ^ (_local9 + int(each2[((_arg2 + 3) ^ -719)][((_local9 >>> 11) & 3)]))));
_local9 = (_local9 - _local8);
_local6 = (_local6 - ((((_local7 << 4) ^ (_local7 >>> 5)) + _local7) ^ (_local9 + int(each2[((_arg2 + 3) ^ -719)][(_local9 & 3)]))));
};
_local3 = (_local3 + (String.fromCharCode(_local6) + String.fromCharCode(_local7)));
_local4++;
};
if (_local3.charCodeAt((_local3.length - 1)) == 0){
_local3 = _local3.substring(0, (_local3.length - 1));
};
return (_local3);
}
}
我创建了这个java类
public static String koodi(int _arg1, int _arg2) {
long[][] each = new long[][] {{-1472138623l, 878922361l, -1110917592l, 1826394737l, 1030846636l, 217728939l, -379917437l, -275132097l, 1767307091l, -1195948886l, -682829029l, 95838200l, -2061993620l, 149857669l}, {-1020757973l, -2077877836l, 501378647l, -259185914l, -552298551l, -2022558100l, 289023736l, -769360169l, 290347576l, 2140291152l, 289023736l, -769360169l, -1624536668l, -554327313l, -1471319910l, 1589545115l, -1818914025l, -690206676l, 400482224l, 1628417421l, -39094471l, -1572489861l, -1233920875l, 929897812l, 1510659349l, 53240083l, 1392835656l, 2121191360l, -653167482l, -1507569495l, -1020971252l, -163502559l}, {-1342432177l, 1704770503l, -1713368805l, 639561550l, 1540369766l, 1219510839l, -527278624l, 1281025686l, 336464845l, 246475111l, 5783626l, -1178158347l, 1131157072l, -618389383l}};
long[][] moi = new long[][]{{1465852829l, 35371303l, -307080369l, 1689322742l}, {-850493536l, -1811866893l, 1569332413l, 2134615290l}, {-15985840l, -327516657l, 258826066l, 671668905l}};
String _local3;
int _local4;
int _local5;
long _local6;
long _local7;
long _local8;
long _local9;
_local3 = "";
_local4 = 0;
_local5 = each[((_arg1 - 5) ^ -614)].length;
while (_local4 < _local5) {
_local6 = each[((_arg1 - 5) ^ -614)][_local4];
_local4++;
_local7 = each[((_arg1 - 5) ^ -614)][_local4];
_local8 = 2654435769l;
_local9 = 84941944608l;
while (_local9 != 0) {
_local7 = (_local7 - ((((_local6 << 4) ^ (_local6 >>> 5)) + _local6) ^ (_local9 + moi[((_arg2 + 3) ^ -719)][(int)((_local9 >>> 11) & 3)])));
_local9 = _local9 - _local8;
_local6 = (_local6 - ((((_local7 << 4) ^ (_local7 >>> 5)) + _local7) ^ (_local9 + moi[((_arg2 + 3) ^ -719)][(int)(_local9 & 3)])));
}
System.out.println(_local6 + ", " + _local7);
_local3 = (_local3 + (Character.toString((char)_local6) + Character.toString((char)_local7)));
_local4++;
}
if (_local3.charAt((_local3.length() - 1)) == 0){
_local3 = _local3.substring(0, (_local3.length() - 1));
}
return (_local3);
}
}
但输出字符串很奇怪。我做了一些调试,并在调用值为-609和-722的函数时找到每个字符的数值: -677857860876954496,5754082936929584792
6046835156833219103,8754941294573536069
7069447582518148541,4294064619892486743
-2772733404575532986,-8784792872554981235
-4217620190071583542,2359222666259250776
2177633633905814216,3452433562470547029
-264733541191837309,1305785365920322607
无论如何都要运行AS3代码来检查字符串值是否匹配?