当前位置: 首页 > 知识库问答 >
问题:

AES-256加密/解密

巫马欣嘉
2023-03-14

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

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

具有以下参数:

    null

当我尝试用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个答案

上官高翰
2023-03-14

将键和IV转换为十六进制。

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

OpenSSL需要十六进制的键和IV。当您将密钥提供为3B1C2DDAA872F28A4CDCB3324394569B时,会用添加的0填充密钥

“3B1C2DDAA872F28A4CDCB3324394569

类似地,IV被转换为

“00000000000000000000000000000000000000000000000000000000000000”。

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

 类似资料:
  • 客户端: 服务器端:

  • 问题内容: 我有下面的Java代码来加密使用64个字符的密钥的字符串。我的问题是这将是AES-256加密吗? 以下是结合了divanov和laz建议的代码。 问题答案: 是的,它将是64个字符,即32个字节和256位,并且256位的任何序列都可以用作AES-256密钥。 我建议您使用DatatypeConverter.parseHexBinary(或您选择的库中的类似实用程序)将十六进制字符串转换

  • 问题内容: 我正在尝试使用PyCrypto构建两个接受两个参数的函数:消息和密钥,然后对消息进行加密/解密。 我在网络上找到了几个链接可以帮助我,但是每个链接都有缺陷: 在codekoala上的此代码使用了os.urandom,PyCrypto不建议这样做。 此外,我不能保证给函数的键具有预期的确切长度。我该怎么做才能做到这一点? 另外,有几种模式,推荐哪种?我不知道该怎么用:/ 最后,IV到底是

  • 我试图使用PyCrypto构建两个函数,它们接受两个参数:消息和密钥,然后加密/解密消息。 我在网上找到了几个帮助我的链接,但每一个都有缺陷: 编辑:删除了代码部分,因为它不安全。

  • 1.我有java函数,它加密xml文件并返回加密的字符串。 2.我有c#函数,它可以解密由java函数加密的消息。 Java加密功能运行良好。但问题是C函数, 当我解密时,会得到下面的错误消息 我使用下面的参考搜索解决方案 Java中的AES加密和C#中的解密 C#/Java|AES256加密/解密 C#和Java中的加密/解密 但我仍然面临同样的错误。谁能给我提个建议吗。 我只是改变我的C#加密

  • 我希望有一个用C编写的程序,可以在没有openssl这样的大型库的帮助下,用AES-CBC对字符串进行编码/解码。 目标: 使用密码短语对字符串进行编码/解码: 因此,应用程序需要接受3个输入参数。。。 输入字符串(待编码)/或已编码字符串(待解码) 用于编码/解码字符串的密码 编码或解码指示器 我对C语言不熟悉(我可以用C#编码)。 我已经找到了https://github.com/kokke/