【 以下文字转载自 Java 讨论区 】
发信人: iwannabe (I wanna be), 信区: Java
标 题: 问一下,这是什么加密算法?
发信站: 水木社区 (Thu Apr 2 00:37:07 2020), 站内
byte[] table = new byte[]{
0, 0, 0, 0, 1, 0, 0, 0,
1, 0, 0, 0, 0, 0, 0, 0,
1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 1, 0, 0, 0,
1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 1, 0, 0, 0,
0, 0, 0, 0, 1, 0, 0, 0,
1, 0, 0, 0, 0, 0, 0, 0
};
String trimPadding(byte[] key, byte[] toDecrypt)
{
int l = toDecrypt.length;
for(int i =0; i<l; i++){
int a = (toDecrypt[l-i-1]^key[i])&0xff;
if(table[4*(a&0xf)] ^ table[4*(a>>4)] != 0){
break;
}
}
l -= i+1;
return new String(toDecrypt, 0, l); //去掉padding
}
加密算法是3DES
加密是 buffer + padding 生成密文
解密出来buffer + padding,然后根据key来确定padding的长度。
现在解密算法是ok的,想逆推加密算法,主要问题在于这个padding不知道生成。看解密
过程padding是和给定的key相关的,但并一一对应。
--
修改:iwannabe FROM 120.229.29.*
FROM 120.229.29.*