【问题标题】:OpenSSL command line input data lengthOpenSSL 命令行输入数据长度
【发布时间】:2018-03-21 13:46:23
【问题描述】:

使用 OpenSSL CLI,我收到 16 字节输入字符串的错误

echo -e "abcdefgh\x08\x08\x08\x08\x08\x08\x08\x08" | openssl enc -aes-256-cbc -nopad -a -K 6162636465666768696A6B6C6D6E6F707172737475767778797A303132333435 -iv 61636567696B6D6F7173757779303234

陈述

错误的解密 140550741059328:错误:0607F08A:数字信封例程:EVP_EncryptFinal_ex:数据不是块长度的倍数:crypto/evp/evp_enc.c:437

但如果我将输入字符串长度更改为 15 个字节,abcdefgh\x08\x08\x08\x08\x08\x08\x08,则不会发生错误。它发生在 13、14、16 和 17 字节的输入中。其他长度没试过。

鉴于 AES 256 CBC 的块长度为 16 个字节,我看不出我做错了什么。

【问题讨论】:

    标签: openssl aes


    【解决方案1】:

    echo 在字符串后添加回车,使数据加密 17 个字节而不是 16 个字节。

    所以openssl错误是正确的:data not multiple of block length

    您应该使用echo-n 选项:

    echo -ne "abcdefgh\x08\x08\x08\x08\x08\x08\x08\x08" | openssl enc -aes-256-cbc -nopad -K 6162636465666768696A6B6C6D6E6F707172737475767778797A303132333435 -iv 61636567696B6D6F7173757779303234
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-04
      • 1970-01-01
      • 2012-06-25
      • 2010-10-01
      • 1970-01-01
      相关资源
      最近更新 更多