参考文献

openssl

加密

对称加密-AES

  • AES是当前针对大量数据加密时最常用的分组加密算法。AES-256表示分组的密钥空间长度为256比特,具体由于分组算法的不同,AES-256还可以细分为很多种。
1
2
3
4
#加密
openssl enc -aes-256-cbc -in msg.txt -out enc.txt -pass pass:123456 -iter 100 -pbkdf2
#解密
openssl enc -d -aes-256-cbc -in enc.txt -out plain.txt -pass pass:123456 -iter 100 -pbkdf2

对称加密-DES

  • 3DES是DES的升级版,DES的加密强度比较弱。
1
2
#加密
openssl enc -des3 -in out.txt -out p.txt -pass pass:123456 -iter 100 -pbkdf2

对称加密-blowfish

1
2
#加密
openssl enc -blowfish -in out.txt -out p.txt -pass pass:123456 -iter 100 -pbkdf2

对称加密-chacha20

1
2
#加密
openssl enc -chacha20 -in out.txt -out p.txt -pass pass:123456 -iter 100 -pbkdf2

对称加密-rc4

  • 一种流加密算法
1
2
#加密
openssl enc -rc4 -in out.txt -out p.txt -pass pass:123456 -iter 100 -pbkdf2

非对称加密-rsa

  • 用于数据加密与签名
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#生成未经对称加密保护的RSA密钥对
openssl genrsa -out RSA.pem
#生成经AES加密后的RSA密钥对
openssl genrsa -out rsa.pem -aes128 -passout pass:123456 1024
#将RSA密钥对进行一次DES3加密处理
openssl rsa -in RSA.pem -des3 -passout pass:123456 -out E_RSA.pem

#从RSA密钥对中分离出公钥
openssl rsa -in RSA.pem -passin pass:123456 -pubout -out RSA_pub.pem

#加密
openssl rsautl -encrypt -pubin -inkey RSA_pub.pem -in plain.txt -out enc.txt
#解密
openssl rsautl -decrypt -inkey RSA.pem -in enc.txt -out plain.txt
#签名
openssl rsautl -sign -inkey RSA.pem -in plain.txt -out enc.sig
#验签
openssl rsautl -verify -pubin -inkey RSA_pub.pem -in enc.sig -out plain.txt