RSA
RSA是一个非常神奇的加密算法,它具有一个离散对数和椭圆曲线加密都没有的特性:
既可以用公钥加密然后私钥解密,也可以用私钥加密然后公钥解密(对称性)。
公钥加密然后私钥解密,可以用于通信中拥有公钥的一方向拥有私钥的另一方传递机密信息,不被第三方窃听。
那么私钥加密然后公钥解密是用在什么场合呢?就是数字签名。
因为RSA中的每一个公钥都有唯一的私钥与之对应,任一公钥只能解开对应私钥加密的内容。换句话说,其它私钥加密的内容,这个公钥是解不开的。
这样,如果你生成了一对RSA密钥,你把公钥公布出去,并告诉全世界人这个公钥是你的。之后你只要在发送的消息,比如“123456”,用私钥加密,其他人拿公钥解密,只有私钥对应的公钥才能解开,也就能确认是私钥发的消息。
其他人因为没有对应的私钥,所以没法生成公钥可以解密的密文,所以是不可伪造的。
又因为公钥对应的私钥只有一个,所以只要能成功解密,那么发消息的一定是你,不会是其他人,所以是不可抵赖的。
当然,在数字签名的过程中,我们不需要对“123456”保密,所以加密、解密这样的名词在这个场景中并不准确,用签名和解签会更合适。
实际应用中,由于直接对原消息进行签名有安全性问题,而且原消息往往比较大,直接使用RSA算法进行签名速度会比较慢,所以我们一般对消息计算其摘要(使用SHA-256等安全的摘要算法),然后对摘要进行签名。只要使用的摘要算法是安全的(MD5、SHA-1已经不安全了),那么这种方式的数字签名就是安全的。
DES
Data Encryption Standard
- 对称加密
- 速度快
- 不安全
AES
Advanced Encryption Standard(DES升级版)
- 对曾加密
- 速度快
- 相对DES安全











网友评论