OpenSSL自带的aes_128_ecb加密函数——密文长度测试
发表于2017年11月29日 阅读人数(3608)
近来要用到对称加密,就是使用了openssl的库给文件加密,选择的128位的分块加密,对称加密有分块加密和流加密两种。在实验中要考虑文件的长度所以关注到了密文的长度问题。
测试环境:ubuntu16.04
首先使用vi filename.txt 新建了一个文件,输入了15个字符,照理说应该显示文件大小是15个字节,其实ls -l 查看显示的是16个字节,因为linux系统自动在文本添加了$符号,可以在打开文件后进入命令模式输入set list可以看到文件中多了一个$符号。这都是题外话,现在使用OpenSSL命令来加密文件filename.txt:
openssl enc -e -aes-128-ecb -kfile key.txt -in filename.txt -out filename_encryp.txt -p
使用ls -l查看文件filename_encry.txt的大小为48个字节
将filename.txt的文件打开去掉一个字符,文件大小变为了15个字节,再使用OpenSSL命令来加密文件,这之后得到文件大小为32个字节。
这是为什么呢?
由于aes-128-ecb是分块加密,块的大小设定是16个字节,当文件块大小不是16的倍数时,会先将文件分块后不足16个字节的块填充补全为16个字节,而刚好能够整除16的文件大小怎么处理呢,OpenSSL会添加一个16字节的数据。这样看来加密后的数据还是多了16个字节,我打开看了密文看见了salt的文字,正好盐值也是16个字符,可能密文中保存了盐值的16个字节。