1、加密算法
加密算法分为两大类:对称加密和非对称加密。
(1)对称加密
加密和解密的密钥一样,即发送和接收双方都持有密钥,它们使用该密钥进行加密和解密。
(2)非对称加密
加密和解密的密钥不一样,密钥分为公钥和私钥。公钥是向外公开的,私钥私自保存,绝对不公开,不参与数据传输。通过使用私钥对数据进行加密,传输到接收方,然后接收方使用公钥进行解密即可获得原始信息。
(3)对称加密和非对称加密算法
2、数字签名
签名的作用无非就是证明某个文件上的内容确实是属于某个人写/认同的,别人不能冒充其签名(不可伪造),其自己也不能否认上面的签名是其的(不可抵赖)。
数字签名是利用公钥加密系统满足不可伪造和不可抵赖性的一种技术。数字签名的作用是验证数据来源及数据完整性。
如果使用私钥对整个数据报进行加密,然后在接收方使用公钥对加密信息进行解密,这两个步骤的开销是相当可观的。实际应用中,由于直接对原消息进行签名有安全性问题,而且原消息往往比较大,直接进行私钥加密速度会比较慢,所以一般对消息计算其摘要(使用SHA-256等安全的摘要算法),然后对摘要进行数字签名。只要使用的摘要算法是安全的(MD5、SHA-1已经不安全了),那么这种方式的数字签名就是安全的。
整个消息发送过程如下:
1)对消息进行摘要生成(使用摘要算法生成)
2)使用私钥对摘要进行加密
3)将数字签名附加到消息上,然后使用私钥进行加密,获得密文
4)将密闻发送出去
整个消息接受过程:
1)接受到消息后,使用私钥进行解密
2)使用消息摘要生成算法对消息进行摘要生成
3)使用公钥对数字签名进行解密
4)通过比较消息摘要和解密后对数字签名即可判断出消息是否完整