Альтернативный код в JavaScript для javax.crypto
Я хочу реализовать приведенный ниже код в JavaScript вместо использования пакетов javax.crypto.
Ниже код будет генерировать ключ с использованием AES.
KeyGenerator kgen;
String key;
try {
kgen = KeyGenerator.getInstance("AES");
kgen.init(128);
SecretKey secretkey = kgen.generateKey();
BASE64Encoder encode = new BASE64Encoder();
key = encode.encode(secretkey.getEncoded());
} catch (NoSuchAlgorithmException e) {
// exceptionLogFile(e, null);
e.printStackTrace();
key = "Error@SecretKeyGeneration: No Such Algorith Exception. " + e.getMessage();
} catch (Exception e) {
// exceptionLogFile(e, null);
e.printStackTrace();
key = "Error@SecretKeyGeneration: " + e.getMessage();
}
return key;
Это прекрасно работает в Java, теперь кто-нибудь может предложить мне альтернативу в JavaScript.
Я узнал о Crypto.js, но как я могу использовать здесь, не понимая.
Для шифрования и дешифрования я использую "AES/ECB/PKCS5Padding"
так это совместимо с кодом JavaScript?
Пожалуйста помоги.
Заранее спасибо.
1 ответ
Ключ AES состоит просто из случайных байтов. Так что для 128-байтового ключа вы можете просто сделать:
var key = CryptoJS.lib.WordArray.random(128/8);
и закодировать это:
var keyBase64 = CryptoJS.enc.Base64.stringify(key);
Конечно, ключ не будет идентичен тому, который вы сгенерировали ранее, для этого вам необходимо декодировать ранее сгенерированный ключ в кодировке base 64.
Чтобы использовать ключ, используйте явные параметры ключа:
var encrypted = CryptoJS.AES.encrypt("Message", key, { mode: CryptoJS.mode.ECB});
Заполнение PKCS#7 - идентичное заполнению PKCS#5 - уже используется по умолчанию, и ECB не использует IV.