不可逆加密
- 说明:加密过程中不需要秘钥,输入明文后经加密算法加密后得到密文,无法由密文解密出明文
- 用途:一般用于生成数据摘要,通过对比数据摘要来比较数据是否相同,因为数据可能很多,直接比较很耗时
- 常见算法
- MD5:Message-Digest Algorithm,密文为128位
- SHA1:Secure Hash Algorithm,密文为160位
- SHA2:包括SHA-224 | SHA-256 | SHA-384 | SHA-512,数字表示密文的位数
- openssl实现
openssl md5 -out a.out a.txt
openssl dgst -md5 -out a.out a.txt
md5sum a.txt
md5sum -c a.out
对称加密
- 说明:需要秘钥,通过明文和秘钥可加密得到密文,通过密文和秘钥可解密得到明文
- 常见算法
- DES:Data Encryption Standard,明文要求64位,秘钥64位,得到的密文56位。可选择不同的加密模式(ECB|CBC|CTR|OFB|CFB)和填充模式(pkcs5|pkcs7|iso10126|ansix923|zero)来解决不符合的数据长度,写法:DES-ECB
- AES:Advanced Encryption Standard,用于替代DES,可选AES-128|AES-192|AES-256(数字表示秘钥的位数),有5种加密模式(ECB|CBC|CTR|OFB|CFB),写法:AES-ECB
非对称加密
- 说明:需要秘钥,分为公钥和私钥。使用公钥加密的数据只能由私钥解密,使用私钥加密的数据只能由公钥解密,相较于对称加密,耗时更长
- 常见算法
- RSA:秘钥至少为500位长,一般推荐使用1024位。
- ECC:Elliptic Curves Cryptography,椭圆曲线密码编码学
- DH算法
- ECC和DH能结合使用构成ECDH算法,用于秘钥协商
openssl genrsa -des3 2048 -out server.key
openssl rsa -text -in server.key
openssl rsa -pubout -in server.key -out server.pub