加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

bash – AES128-CBC“坏幻数”和“错误读取输入文件”

发布时间:2020-12-16 01:33:16 所属栏目:安全 来源:网络整理
导读:我试图用消息解密文件(part444.txt): y2EdLtmNQsZkvwwf8jf3fM6c1thfzF0sQfblayGIBik= 这是在CBC模式下128位AES下的base64编码加密文本.它没有填充. IV是加密文本的前16个字节,密钥是h4ckth1sk3yp4d16. 我知道人们从Base64的问题中收到了错误的幻数错误,但现
我试图用消息解密文件(part444.txt):
y2EdLtmNQsZkvwwf8jf3fM6c1thfzF0sQfblayGIBik=

这是在CBC模式下128位AES下的base64编码加密文本.它没有填充. IV是加密文本的前16个字节,密钥是h4ckth1sk3yp4d16.

我知道人们从Base64的问题中收到了错误的幻数错误,但现在我得到了“错误读取输入文件”而不知道从哪里开始.

我试过了:

openssl enc -base64 -d part444.txt | openssl aes-128-cbc -d -k h4ckth1sk3yp4d16

为什么我遇到错误“坏幻数”和“错误读取输入文件”?

这对openssl来说有点痛苦,因为openssl的加密会假设填充并从输入的密码中导出一个盐渍密钥,你必须故意关闭它.

使用PyCrypto这样做更容易在python中进行,其中没有做出这些假设.

>>> import base64
>>> data = base64.b64decode('y2EdLtmNQsZkvwwf8jf3fM6c1thfzF0sQfblayGIBik=')
>>> from Crypto.Cipher import AES
>>> aes_crypter = AES.new('h4ckth1sk3yp4d16',AES.MODE_CBC,data[:16])
>>> aes_crypter.decrypt(data[16:]) # this gives the encrypted secret.

可以使用openssl执行此操作,但是您必须读取base64编码数据 – 取出前16个字节并记住它作为$IV(将其编码回openssl期望的十六进制),开始读取所有字节在第16个之后,记住它作为$CIPHERTEXT(并说在base64中重新编码).与$KEY类似,您必须将其从ASCII转换为十六进制的字节.假设您将这些存储在变量中,那么以下内容将起作用:

IV=`base64 -d part444.txt | xxd -p -l 16`
CIPHERTEXT=`base64 -d part444.txt | cut -b 17- | base64`
KEY=`echo -n h4ckth1sk3yp4d16 |xxd -p`

echo $CIPHERTEXT | openssl aes-128-cbc -d -a  -nopad -K $KEY -iv $IV && echo ""

注意base64 -d将base64解码为二进制(使用GNU coreutils中的base64;使用base64 -D替换BSD),base64 b64编码二进制数据,cut -b 17-从数据的第17个字节读取到文件末尾,以及xxd -p将二进制转换为十六进制.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读