AES-256加密/解密

问题描述 投票:0回答:1

我确定我错过了一些东西,但我很难理解什么!

我使用AES-256在这个网站上在线加密一个虚拟字符串:

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

使用以下参数:

  • 要加密的文本:这是一个测试!
  • 模式:CBC
  • 密钥大小:256位
  • 输入IV:0000000000000000
  • 密钥:3B1C2DDAA872F28A4CDCB3324394569B

输出(Base64格式)是:

克+ 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:
openssl cryptography aes
1个回答
1
投票

将Key和IV转换为HEX。

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

OpenSSL期望HEX中的Key和IV。当你提供Key为3B1C2DDAA872F28A4CDCB3324394569B时,它会添加一个额外的零来实现它

“3B1C2DDAA872F28A4CDCB3324394569B00000000000000000000000000000000”。

类似地,IV被转换为

"00000000000000000000000000000000".

因此,即使您提供了正确的密钥,OpenSSL最终也会使用错误的密钥和IV并且解密失败。

注意:传递标志“-p”和openSSL将显示使用的键和IV。

© www.soinside.com 2019 - 2024. All rights reserved.