Я пытаюсь расшифровать сообщение, которое было зашифровано на бэкэнде Java.
Для этого я подготовил эту скрипту: http://jsfiddle.net/Lwp15e8z/1/
var secretKeyHash = CryptoJS.SHA256('mySecret')
var bytes =
CryptoJS.AES.decrypt(
CryptoJS.enc.Base64.parse(
"mB7DRFjMdC1cG+twH3jKDiWcPGWypqwHlFqf1vOJpC8="),
secretKeyHash,
{
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7
})
console.log("Result: ", bytes.toString(CryptoJS.enc.Utf8))
Каким-то образом я получаю пустое bytes
WordArray вместо расшифрованного текста.
Есть идеи, что я делаю не так?
Параметры:
- Алгоритм: AES/ CBC / PKCS5Padding
- Ключевая фраза: mySecret
- Зашифрованная Base64: mB7DRFjMdC1cG + twH3jKDiWcPGWypqwHlFqf1vOJpC8 =
*1025**1025* 1027 *
Я уже сделал некоторые наблюдения из документации cryptojs: https://cryptojs.gitbook.io/docs/#ciphers
- "При передаче ключевой фразы CrptyoJS генерирует ключ 256Bit" : Какой алгоритм хэширования этоиспользует?Если это SHA, мне не нужно делать это вручную.
- В этой главе говорится: «при передаче WordArray в качестве ключа ... вы также должны передать фактический IV».Из-за использования
CryptoJS.SHA256
я собираюсь передать в него WordArray.Значит ли это, что мне нужно разобрать IV самостоятельно?