AES-256 шифрование / дешифрование - PullRequest
0 голосов
/ 13 февраля 2019

Я уверен, что что-то упустил, но я изо всех сил пытаюсь понять, что!

Я шифрую фиктивную строку онлайн на этом сайте с AES-256:

https://www.devglan.com/online-tools/aes-encryption-decryption

со следующими параметрами:

  • текст для шифрования: Это тест!
  • Режим: CBC
  • Размер ключа в битах: 256
  • Введите IV: 0000000000000000
  • Секретный ключ: 3B1C2DDAA872F28A4CDCB3324394569B

выход (формат Base64):

g + rR + egh2MCHFnYe0XJM7g ==

, когда я пытаюсь расшифровать его из командной строки с помощью openssl:

echo g+rR+egh2MCHFnYe0XJM7g== | openssl enc -aes256 -d  -out secret.dec -K 3B1C2DDAA872F28A4CDCB3324394569B -iv 0

Я получаю эту ошибку:

bad decrypt
4780398188:error:06FFF06D:digital envelope routines:CRYPTO_internal:wrong final block length:Sources/libressl/libressl-22.240.1/libressl-2.6/crypto/evp/evp_enc.c:524:

1 Ответ

0 голосов
/ 13 февраля 2019

Преобразовать ключ и IV в HEX.

echo g+rR+egh2MCHFnYe0XJM7g== | openssl enc -d -a -aes-256-cbc -nosalt -out deco.dec -p -K 3342314332444441413837324632384134434443423333323433393435363942  -iv 30303030303030303030303030303030

OpenSSL ожидает ключ и IV в HEX.Когда вы указываете ключ как 3B1C2DDAA872F28A4CDCB3324394569B , он дополняется дополнительными нулями, чтобы сделать его

"3B1C2DDAA872F28A4CDCB3324394569B0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

Аналогичным образом IV преобразуется в

"00000000000000000000000000000000".

Следовательно, OpenSSL заканчивается использованием неверного ключа и IV, и расшифровка завершается неудачно, даже если вы предоставили правильные ключи.

Примечание. Пройдите флаг "-p" и openSSL покажет, какие ключи и IV используются.

...