Какие параметры по умолчанию Crypto JS .AES использует для шифрования? - PullRequest
0 голосов
/ 17 января 2020

Существует клиентский код JS, который использует библиотеку Crypto JS для кодирования данных и отправки их на сервер. Мне нужно сделать то же самое, но с использованием Java клиента.

Проблема в том, что я не знаю, какие параметры по умолчанию Crypto JS использует для шифрования.

// client code is very simple
var key = document.; // session string generated on server side
CryptoJS.AES.encrypt(text,key);

Также JS клиент отправляет значение ключа на сервер как MD5 га sh, например: CryptoJS.MD5(secret).

JS клиент использует Crypto JS v3.1.2

Docs заявляет, что он использует CB C и Pkcs7. Нет информации о соли, векторах и т. Д. c.

Итак, я пытаюсь написать тот же код на Java.

String sessionKey = "Wj10MQVgTAwBzsYfjAqtqDeThUyWOnOY";
byte[] sessionKeyBytes = sessionKey.getBytes();
String password = "kupacabra";

String sessionKeyMD5ShouldBe = "7369b67153ac0176e67c073aa4f56c88";
String encodedPasswordShouldBe = "U2FsdGVkX1/yBkv8RFXq5zUPgWWIcEL+i59z+IwfrYs=";

Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding"); // PKCS7 throws exception?
cipher.init(Cipher.ENCRYPT_MODE, new SecretKeySpec(sessionKeyBytes, "AES"));
byte[] encodedPasswordBytes = cipher.doFinal(password.getBytes());

System.out.println(Arrays.toString(encodedPasswordBytes));
System.out.println(Arrays.toString(encodedPasswordShouldBe.getBytes()));

// [7, -110, 66, -23, 74, 53, -81, -63, -110, 127, 9, -126, -8, -98, -109, -122]
// [85, 50, 70, 115, 100, 71, 86, 107, 88, 49, 47, 121, 66, 107, 118, 56, 82, 70, 88, 113, 53, 122, 85, 80, 103, 87, 87, 73, 99, 69, 76, 43, 105, 53, 57, 122, 43, 73, 119, 102, 114, 89, 115, 61]

Может кто-нибудь помочь мне? Я знаю, что на SO уже есть куча подобных, и я попробовал почти все из них, но не могу уловить подсказку.

РЕШЕНА ПРОБЛЕМА:

Найдено это служебный класс (https://gist.github.com/kientux/bb48259c6f2133e628ad). Удален Android указанный c код и протестирован с обслуживаемым. Это работает отлично, я никогда не думал, что это может быть так сложно.

...