0
我想翻譯CryptoJS代碼轉換爲Java代碼。這是javascript代碼:如何CryptoJS AES轉換成Java代碼
CryptoJS.AES.encrypt('hello',CryptoJS.enc.Utf8.parse(CryptoJS.MD5("http://stackoverflow.com")), {iv: CryptoJS.enc.Utf8.parse("1234567812345678")})
上面的代碼中調用的結果字符串是「QtzDsbCgmA9 + XBVEsEm70w ==」
然後我得到CryptoJS.MD5( 「http://stackoverflow.com」)的ToString()方法(鍵= 57f4dad48e7a4f7cd171c654226feb5a)的關鍵值
這是Java代碼:
try {
String content = "hello";
String key = "57f4dad48e7a4f7cd171c654226feb5a";
KeyGenerator kgen = KeyGenerator.getInstance("AES");
kgen.init(128, new SecureRandom(key.getBytes("utf-8")));
SecretKey secretKey = kgen.generateKey();
byte[] enCodeFormat = secretKey.getEncoded();
SecretKeySpec key1 = new SecretKeySpec(enCodeFormat, "AES");
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
byte[] byteContent = content.getBytes("utf-8");
cipher.init(Cipher.ENCRYPT_MODE, key1,new IvParameterSpec("1234567812345678".getBytes("UTF-8")));
byte[] result = cipher.doFinal(byteContent);
System.out.println(new String(result).equals("QtzDsbCgmA9+XBVEsEm70w=="));
} catch (NoSuchAlgorithmException | NoSuchPaddingException e) {
e.printStackTrace();
} catch (BadPaddingException e) {
e.printStackTrace();
} catch (IllegalBlockSizeException e) {
e.printStackTrace();
} catch (InvalidKeyException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (InvalidAlgorithmParameterException e) {
e.printStackTrace();
}
但輸出結果爲false。如何修復java代碼以將結果更改爲true。
嗯...你是不是Base64的比較之前編碼的字節? –
呃......'CryptoJS.enc.Utf8.parse(CryptoJS.MD5(「http://stackoverflow.com」))'是一種類型不匹配。什麼事情都可能發生。你要麼'CryptoJS.enc.Utf8.parse(CryptoJS.MD5(「http://stackoverflow.com」).toString())或簡單地'CryptoJS.MD5(「http://stackoverflow.com」)' 。這是什麼? –