OpenSSL AES加密(调查中)

OpenSSL命令行

环境

  • OS:Win7
  • OpenSSL Ver:1.0.2g

AES加密

    set PATH=%PATH%;%OPENSSL_HOME%\bin
    set OPENSSL_CONF=%OPENSSL_HOME%\ssl\openssl.cnf
    echo abcde01234597 | openssl aes-256-ecb -k 64-00-6A-22-A6-31 -base64 | openssl aes-256-ecb -k 64-00-6A-22-A6-31 -base64 -d

注:%OPENSSL_HOME%是OpenSSL的安装路径。

选项说明

  1. -k %KEY%-pass pass:%KEY%功能相同
  2. -p打印重要信息
  3. -debug打印调试信息
  4. -nopad不填充(默认填充方式是PKCS5Padding)
  5. -nosalt不加盐(默认加盐)
  6. -base64/-a输出转化为base64格式
  7. -d解密,默认为加密(-e)

问题

  • 为什么-p打印的KEY与-k指定的KEY不一致?而-K指定的值与-p打印的KEY是一致的?
    调查中...

  • AES_ecb_EncodeAES_Encode相同,默认的padding是什么?
    默认paddingPKCS5Padding

  • 为什么AES加解密只能是13个字符的明文,多于或少于13个字符都会出错?

    echo 123456789abcd | openssl aes-256-ecb -k 64-00-6A-22-A6-31 -base64 -nopad -nosalt -p

调查中...


OpenSSL命令行AES-BASE64加密问题

  • 条件

  • 明文:123456789abcdef0

  • 密钥:helloaeshelloaes
    68656c6c6f61657368656c6c6f616573helloaeshelloaes十六进制

  • 命令行

  1. 从文件plain.txt中取明文,加密后密文写入cipher.txt
openssl enc -aes-128-ecb -in plain.txt -out cipher.txt -K 68656c6c6f61657368656c6c6f616573 -base64 -p -nosalt
  1. 从文件plain.txt中取明文,加密后密文打印到控制台
openssl enc -aes-128-ecb -in plain.txt -K 68656c6c6f61657368656c6c6f616573 -base64 -p -nosalt
  1. 从控制台读取明文,加密后密文打印到控制台
echo 123456789abcdef0 | openssl enc -aes-128-ecb -K 68656c6c6f61657368656c6c6f616573 -base64 -p -nosalt
  1. 从控制台读取明文,加密后密文打印到控制台(另一种写法)
echo 123456789abcdef0 | openssl aes-128-ecb -K 68656c6c6f61657368656c6c6f616573 -base64 -p -nosalt
  • 结果
    1和2加密结果是:ljBKdznsg/Omq8FypZwk8PyW1AQ8L/GHsk1DAvGBQUQ=
    3和4加密结果是:ljBKdznsg/Omq8FypZwk8NOr7YhpT0+6UeR+RPxVmSE=

  • 问题
    为什么文件夹读取和控制台读取明文,相同加密方式结果不一致?
    调查中...


问题分析

1. 环境

2. 现象

运行echo 123456789abcdefg | openssl aes-256-ecb -k 64-00-6A-22-A6-31 -base64 -nopad -nosalt -p出现如下错误:

Error: error:0606508A:digital envelope routines:EVP_DecryptFinal_ex:data not multiple of block length

3. 分析

digital envelope routines:数字信封的例程
data not multiple of block length:数据不是多块长度

123456789abcdefg大小是16bytes(128bits),根据AES加密要求,完全符合一个明文块的长度,为什么会出现明文长度不正确的情况?逐渐减少明文长度,经过测试只有密文为123456789abcd,即13bytes(112bits),为什么是这个结果?

4. 解答

怀疑是OpenSSL 1.0.2g存在Bug。
调查中...


参考

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 分组密码每次只能处理加密固定长度的分组,但是我们加密的明文可能会超过分组密码处理的长度。这时便需要对所有分组进行迭...
    查无此人asdasd阅读 1,378评论 0 0
  • linux资料总章2.1 1.0写的不好抱歉 但是2.0已经改了很多 但是错误还是无法避免 以后资料会慢慢更新 大...
    数据革命阅读 13,576评论 2 33
  • 对称加密一 基本介绍1、简介 对称加密算法又称传统加密算法。 加密和解密使用同一个 密钥。2、对称加密算法示例...
    第1001号群众演员阅读 557评论 0 0
  • 1、不安全的随机数生成,在CSRF TOKEN生成、password reset token生成等,会造成toke...
    nightmare丿阅读 4,020评论 0 1
  • 天边像积了雪 红的蓝的紫的 都有 我想今夜的星星 大概是喝多了春酿的美酒 醉得一塌糊涂 月亮也有了想留住的人 万家...
    铜门深雀阅读 304评论 0 0

友情链接更多精彩内容