Шифрую строку в java и javascript. Использую одинаковые настройки, ключ, вектор, метод и т.д.
String s = "qwerty";
IvParameterSpec iv = new IvParameterSpec("1234567891234567".getBytes("UTF-8"));
//генирируем случайный АЕС ключ
Cipher cipher = (Cipher) Cipher.getInstance("AES/CFB/PKCS7Padding");
// KeyGenerator kgen = KeyGenerator.getInstance("AES");
//kgen.init(256);
//SecretKey key = kgen.generateKey();
byte[] key = ("ytrewq").getBytes();
//key = Arrays.copyOf(key, 16); // use only first 128 bit
SecretKey secretKey = new SecretKeySpec(key,"AES");
cipher.init(Cipher.ENCRYPT_MODE,secretKey,iv);
byte[] bytes = cipher.doFinal(s.getBytes());
String loadCriptLogin = android.util.Base64.encodeToString(bytes, android.util.Base64.DEFAULT);
System.out.println(loadCriptLogin);
код яваскрипт
var text = "qwerty";
var Key = CryptoJS.enc.Hex.parse("ytrewq");
var IV = CryptoJS.enc.Hex.parse("1234567891234567");
var encryptedText = CryptoJS.AES.encrypt(text, Key, {iv: IV, mode: CryptoJS.mode.CFB, padding: CryptoJS.pad.Pkcs7});
Но на выходе получаю разные зашифрованые строки, в чем может быть проблема?
Спасибо всем кто откликнулся. В вопросе разобрался. Вот java и js код, может кому то поможет.
<script src="crypto-js.js"></script>
<script>
//var key = CryptoJS.lib.WordArray.random(16);
// var iv= CryptoJS.lib.WordArray.random(16);
var key = CryptoJS.enc.Utf8.parse('ytrewqqwerty1234');
var iv = CryptoJS.enc.Utf8.parse('1234567891234567');
var message = "qwerty";
var encrypted = CryptoJS.AES.encrypt(message, key, { iv: iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 });
var cipherData = iv.toString(CryptoJS.enc.Base64)+":"+encrypted+":"+key.toString(CryptoJS.enc.Base64);
console.log(cipherData);
</script>
ява код
String ivstr = "MTIzNDU2Nzg5MTIzNDU2Nw=="; // вектор в бэйсе
String s = "qwerty"; //строка которую шифруем
String keyString = "eXRyZXdxcXdlcnR5MTIzNA=="; // ключ в бэйсе
byte[] ivS = Base64.decode(ivstr, Base64.DEFAULT);
byte[] keyB = Base64.decode(keyString, Base64.DEFAULT);
IvParameterSpec iv = new IvParameterSpec(ivS);
Key k = new SecretKeySpec(keyB, "AES");
Cipher cipher = null;
try {
cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, k,iv);
byte[] bytes = cipher.doFinal(s.getBytes("UTF-8"));
String loadCriptLogin = android.util.Base64.encodeToString(bytes, Base64.DEFAULT);
System.out.println(loadCriptLogin);
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (NoSuchPaddingException e) {
e.printStackTrace();
} catch (InvalidAlgorithmParameterException e) {
e.printStackTrace();
} catch (InvalidKeyException e) {
e.printStackTrace();
} catch (BadPaddingException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IllegalBlockSizeException e) {
e.printStackTrace();
}
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Подскажите, пожалуйста, можно ли как то в TypeScript указать тип для массива, таким образом, что бы описать, что он может состоять только из тех...
Управляешь самолетом и собираешь топлива, каждая собранная соплива увеличивает счетчик топлива до 10(единица топлива дает 1сек полета)Нужно...
Копирование данных из нескольких полей формы в значения ключа JSON
Случай такой: значение input задается путем перемещения кастомного ползунка, который может находиться где угодноЕсть ли способ протаскивания...