3
我有以下用於創建AES-128密碼的Java代碼,其中密鑰和iv都基於相同的密碼短語。Crypto JS AES-128密碼 - 等效的Javascript代碼
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
byte[] keyBytes = new byte[16];
byte[] b = passphare.getBytes("UTF-8");
int len = b.length;
if (len > keyBytes.length) {
len = keyBytes.length;
}
System.arraycopy(b, 0, keyBytes, 0, len);
SecretKeySpec keySpec = new SecretKeySpec(keyBytes, "AES");
IvParameterSpec ivSpec = new IvParameterSpec(keyBytes);
cipher.init(opmode, keySpec, ivSpec);
cipher.doFinal(textToEncrypt.getBytes("UTF-8"));
我試圖在JavaScript中使用相同的方法使用CryptoJS生成相同的密碼,但沒有成功。你能幫我麼?
你能提供一個簡短的樣本輸入和輸出嗎?這將使編寫和測試等效的cryptojs版本變得更加容易。另外,你可以添加你目前盡力而爲的cryptojs嘗試嗎? – tucuxi
是的,當然!這是我到目前爲止嘗試http://jsfiddle.net/jonaix/hgAZM/ –
僅供參考,這是不安全的。您直接將密碼轉換爲字節並將其用作密鑰。您應該使用密碼來使用基於密碼的密鑰派生函數(如PBKDF或bcrypt或scrypt)來生成安全密鑰。你的IV也不是隨機的,這是不安全的。請參閱crypto.stackexchange.com。 – Chloe