GalaxyPilot —— D.S


        生命不熄,战斗不止
数据加载中……

java一算法的逆运算,分享出来供有兴趣的朋友研究

private static void eighth(byte[] target){//[5, 4, 3, 8, 6, 0, 12, 10, 10, 2, 15]
byte abyte0[] = new byte[11];
        long l3 = (target[9] << 4) + target[10]; //47
        for(int i = 0; i < 9; i++)
        {
            long l5  = 9L * l3 + (long)i;//423
            long l6;
            long l7 = ((l6 = 0x7fffffffL) - 1L) / 256L;//8388607
            long l8 = (l6 << 1) + 2L;//4294967296
            long l9 = 16807L;//16807
            long l10 = 1L;
            for(int i1 = 0; (long)i1 < l5 + 12L; i1++)
            {
                if((l10 = (int)(l10 *= l9)) < 0L)
                    l10 += l8;
                l10 %= l6;
            }
            byte byte1;
            byte1  = (byte)(int)(l10 / l7);
            abyte0[i] = (byte)(target[i] - byte1 & 0xf);//[0, 10, 7, 5, 0, 7, 1, 1, 11, 0, 0];
        }
}
byte参数 target 实际值 =[5, 4, 3, 8, 6, 0, 12, 10, 10, 2, 15],
经该方法运算后 abyte0 =[0, 10, 7, 5, 0, 7, 1, 1, 11, 0, 0];
现在要根据 abyte0 =[0, 10, 7, 5, 0, 7, 1, 1, 11, 0, 0] 逆向算出 target,数组最后两位可以不管。

posted on 2019-11-27 16:39 舵手 阅读(798) 评论(0)  编辑  收藏


只有注册用户登录后才能发表评论。


网站导航: