crypto-js используется разработчиками javascript для шифрования текста. Его просто использовать.
var CryptoJS = require("crypto-js");
// Encrypt
var ciphertext = CryptoJS.AES.encrypt('my message', 'secret key 123');
// Decrypt
var bytes = CryptoJS.AES.decrypt(ciphertext.toString(), 'secret key 123');
var plaintext = bytes.toString(CryptoJS.enc.Utf8);
console.log(plaintext);
В этом примере функция encrypt принимает только два аргумента: messageToEncrypt и соль. Остальная часть конфигурации будет находиться внутри его определения. Я не специалист по javascript, поэтому мне сложно найти и понять определение encrypt.
Я хочу добиться такого же шифрования AES
, используя java. Итак, для того же входного аргумента, например. messageToEncrypt и соль Я должен получить тот же зашифрованный текст, используя библиотеку crypto-js и реализацию Java.
Я попробовал javax.crypto
, изучив некоторые ссылки в Google.
String plainText = "messageToEncrypt";
String key = "mySalt";
SecretKey secKey = new SecretKeySpec(key.getBytes("UTF-8"), "AES");
Cipher aesCipher = Cipher.getInstance("AES");
aesCipher.init(Cipher.ENCRYPT_MODE, secKey);
byte[] x = aesCipher.doFinal(plainText.getBytes());
System.out.println(x);
Но у меня это не работает, потому что я не знаю точных параметров, таких как keySize и iterationCount.
Я пытался использовать https://github.com/mpetersen/aes-example/blob/master/src/main/java/org/cloudme/sample/aes/AesUtil.java также, но опять же, я не уверен в keySize и количество итераций.
Как я могу создать простую точную реализацию шифрования AES от crypto-js в java?