本文主要是对称算法的终端演示+代码演示
OpenSSL终端演示
下面主要采用DES、AES
和 ECB、CBC
两两组合的方式进行演示,涉及的终端命令主要有以下一些
加密
-
AES + ECB
加密“hello”字符串echo -n hello | openssl enc -aes-128-ecb -K 616263 -nosalt | base64
-
AES + CBC
加密“hello”字符串echo -n hello | openssl enc -aes-128-cbc -iv 0102030405060708 -K 616263 -nosalt | base64
解密
-
AES + ECB
解密echo -n d1QG4T2tivoi0Kiu3NEmZQ== | base64 -D | openssl enc -aes-128-ecb -K 616263 -nosalt –d
-
AES + CBC
解密echo -n u3W/N816uzFpcg6pZ+kbdg== | base64 -D | openssl enc -aes-128-cbc -iv 0102030405060708 -K 616263 -nosalt –d
1、DES + ECB
加密
-
- vi abc.txt
000000000000
111111111111
222222222222
000000000000
111111111111
222222222222
000000000000
111111111111
222222222222
000000000000
111111111111
222222222222
000000000000
111111111111
222222222222
000000000000
111111111111
222222222222
-
对称加密(默认会加盐):
openssl enc -des-ecb -K 016263 -nosalt -in abc.txt -out msg1.bin
-
enc
: 表示加密方式,即对称加密 -
msg1.bin: 二进制文件
-
-
查看二进制文件:
xxd msg1.bin
将第二个重复的前两个`00,改成88`
000000000000
111111111111
222222222222
880000000000
111111111111
222222222222
000000000000
......
查看此时的加密后密文二进制,与上面进行对比
-
变化:
931f 4a54 79bf 730f 4453 2df5 e152 38f1
变成了c7e1 1de2 c778 9df6 4d79 8bec 04ad 08c4
。说明修改两个字符,其最小单位16字节
-
如果修改
1
个字符,最小单位是8
个字节。所以加密过程中,最低是8字节
2、DES + CBC
-
vi abc.txt(内容与1中相同)
-
加密:
openssl enc -des-cbc -K 616263 -iv 0102030405060708 -nosalt -in abc.txt -out msg3.bin
-
修改一个字符,获取 msg4.bin
-
-iv
:向量的表示方式 -
616263
:加密的key,换成 abc 也是可以的
-
-
与ECB模式对比:从第2个开始,其二进制就不同了(CBC是链式加密)
注:剩余的