常见的加密类型及其算法

常见的加密类型及其算法

加密类型

使用算法

基本特性

对称加密

DES(数据加密标准,56位密钥)、

AES(高级加密标准,128位密钥)、

3DES、Blowfish、Twofish、CAST5、IDEA、RC6

加密、解密使用同一个密钥

通常用来加密数据,加解密速度快

密钥过多,管理密钥困难

密钥交换困难

加密:# openssl enc -e -des3 -a -salt -in fstab -out fstab.ciphertext

常用选项:

  • -e:加密

  • -des3:加密数据时使用的算法,可用# openssl ? --> Cipher commands子命令中的各种其它算法代替

  • -a:对加密后的数据进行base64编码,或解密前先对数据进行base64解码

  • -salt:加盐。加盐后,相同的明文可以得到不同的密文。默认情况下,盐值是随机生成的

  • -in FILENAME:指定要加密的文件

  • -out FILENAME:指定加密后生成的文件

解密:# openssl enc -d -des3 -a -salt -in fstab.ciphertext -out  fstab.plaintext

常用选项:

  • -d:解密

 

公钥加密

(非对称加密)

RSA(既能用于加密,又能用于数字签名)、

DSA(只能用于数字签名,不能用于数据加密)、

DH(一般用于密钥交换)

密钥成对出现

公钥:public key,可公开给所有人

私钥:private key,保证其私密性

使用公钥加密的数据,只能使用与之配对的私钥解密

使用私钥加密的数据,只能使用与之配对的公钥解密

通常用来身份认证(数字签名),很少用来加密数据

身份认证:发送方使用自己的私钥加密数据,接收方使用发送方的公钥解密数据,如果解密成功,就能证明发送方的身份

数据保密性:发送方使用接收方的公钥加密数据,接收方使用自己的私钥解密数据,此方法能保证数据的保密性

# openssl genrsa -out ca.key 2048

# openssl req -new -key ca.key -out ca.csr

# openssl x509 -req -days 3650 -in ca.csr-signkey ca.key -out ca.crt

 

单向加密

MD5:消息摘要算法第五版,128位

SHA:安全哈希算法,包括如下5种算法

  • SHA-1:160位

  • SHA-2:

  • SHA-224:224位

  • SHA-256:256位

  • SHA-384:384位

  • SHA-512:512位

CRC-32:提取数据特征码

CBC-MAC、HMAC:消息认证算法

只能加密,不能解密,整个过程不可逆

通常用来提取数据特征码(数据指纹),验证数据的完整性

定长输出:无任输入数据多长,只要使用同一种单向加密算法,输出结果的长度都相同

雪崩效应:输入数据的微小改变,会导致结果的巨大变化

使用不同加密工具单向加密同一文件,只要加密算法一样,输出的消息摘要信息都一样

# openssl dgst -md5 | -sha1 fstab [-out  FILENAME]

# md5sum | sha1sum | sha224sum | sha256sum |  sha384sum | sha512sum fstab

上一篇:javascript – 如何在Postman中使用SHA-1动态密钥


下一篇:无法在Java中输出正确的哈希值.怎么了?