У меня есть следующий код Java для создания AES-128 шифрования, где ключ и iv оба основаны на одной и той же фразе.Crypto JS AES-128 шифр - эквивалент Javascript code
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. Кроме того, можете ли вы добавить свою самую эффективную попытку криптой? – tucuxi
Да, конечно! Это то, что я пробовал до сих пор. Http://jsfiddle.net/jonaix/hgAZM/ –
FYI это не безопасно. Вы конвертируете пароль непосредственно в байты и используете это как ключ. Вы должны использовать пароль для создания защищенного ключа с использованием функции деривации ключа на основе пароля, например PBKDF или bcrypt или scrypt. Ваш IV также не является случайным, что небезопасно. См. Crypto.stackexchange.com. – Chloe