1 回答

TA貢獻(xiàn)1815條經(jīng)驗(yàn) 獲得超13個(gè)贊
在大多數(shù)語(yǔ)言中,將 Zip 文件之類的二進(jìn)制內(nèi)容視為字符串通常是一個(gè)大錯(cuò)誤。在 Javascript 方面,CryptoJS 期望提供任意字節(jié)序列作為CryptoJS.lib.WordArray參數(shù)。
所以,而不是
var ciphertext = aesUtil.encrypt(salt, iv, passPhrase, data.toString());
你應(yīng)該有
var ciphertext = aesUtil.encrypt(salt, iv, passPhrase, CryptoJS.lib.WordArray.create(data));
在 Java 端,將函數(shù) decrypt 更改為返回一個(gè)byte[].
public byte[] decrypt(String salt, String iv, String passphrase, String ciphertext) {
SecretKey key = generateKey(salt, passphrase);
byte[] decrypted = doFinal(Cipher.DECRYPT_MODE, key, iv, base64(ciphertext));
return decrypted;
}
在 中main,將代碼更改為類似于
String fileString = new String(Files.readAllBytes(Paths.get(encryptedPath)));
byte [] decryptedText = aesUtil.decrypt(salt, iv, keyString, fileString);
Files.write(Paths.get(decryptedPath), decryptedText);
添加回答
舉報(bào)