Расшифруйте сообщение AES-256 с помощью CryptoJS, которое было зашифровано с помощью Java / Kotlin - PullRequest
0 голосов
/ 05 февраля 2019

Я пытаюсь расшифровать сообщение, которое было зашифровано на бэкэнде 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 самостоятельно?
...