我试图通过 Blowfish 解密 Hex 编码的字符串。但结果与正确的结果不同。
String s="a1d0534e4baf9e670bde8670caee8b87"
String decKey = "R=U!LH$O2B#";
Cipher m_decrypt = Cipher.getInstance("Blowfish/ECB/PKCS5Padding");
m_decrypt.init(Cipher.DECRYPT_MODE, new SecretKeySpec(decKey.getBytes(),"Blowfish"));
byte[] decrypted = m_decrypt.doFinal(Hex.decodeHex(s.toCharArray()));
来自网站的正确结果:c6 b7 8d 52 31 35 30 34 31 38 38 36 39 37 02 02
我的结果:-58 -73 -115 82 49 53 48 52 49 56 56 54 57 55
上检查了我的正确字节数组答案 0 :(得分:2)
更正结果:c6 b7 8d 52 31 35 30 34 31 38 38 36 39 37 02 02
是十六进制编码,包含两个字节的填充。
我的结果:-58 -73 -115 82 49 53 48 52 49 56 56 54 57 55
in in signed decimal encoding in without padding bytes。
它们在不同的编码中是相同的值,其中"我的结果"已经像往常一样去掉了填充物。