【问题标题】:Encrypt to AES 128 ECB in HEX以 HEX 加密为 AES 128 ECB
【发布时间】:2020-07-16 18:57:14
【问题描述】:

我正在尝试使用openssl 将纯文本加密为AES 128 ECB 中的HEX

使用纯文本 11111111111111111111111111111111 和原始密钥 00000000000000000000000000000000 我正在尝试使用:

echo -n "11111111111111111111111111111111" | openssl enc -aes-128-ecb -K 00000000000000000000000000000000 -nosalt | xxd -p

但这给了我:

b6de54f9a78637d1eb523ca7201589f4b6de54f9a78637d1eb523ca72015
89f40143db63ee66b0cdff9f69917680151e

我应该得到:

FFA3C7ED04710B98067DAE6815E2751F

我做错了什么?

【问题讨论】:

    标签: encryption openssl hex aes


    【解决方案1】:

    您忘记对明文进行十六进制解码。此外,OpenSSL 默认使用 PKCS#7 填充,因此如果您需要 16 字节输出来获得 16 字节输入,则应忽略最后一个 16 字节/32 十六进制字符块。

    【讨论】:

    • 你可以通过命令行进行十六进制解码吗?好,当然。你能从字符串或流中剪切 16 个字节或 32 个字符吗?是的,可以做到。所以是的......(目前不在我的 linux 家庭系统后面,抱歉)。
    • @AlfredBalle - 在明文后添加 | xxd -r -p 用于十六进制解码,并在 openssl 语句中添加 -nopad 选项以禁用填充。
    • 啊,是的-nopad。此刻的大脑是糊状的。
    • 是否可以解密?
    • 哦,来吧:)。反转xxd命令再次获取二进制,然后对openssl使用-d选项,没那么难。
    猜你喜欢
    • 2019-04-18
    • 1970-01-01
    • 2021-12-09
    • 2016-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多