益友软件工作室

加密金刚锁相关技术 → 加密类技术文章 → “公钥算法”和“对称密钥算法”的区别

“公钥算法”和“对称密钥算法”的区别

文章作者:佚名

因为DES是对称密钥算法,所以单纯用DES是无法实现密钥交换的。这要用上RSA一类的“公钥算法”。“公钥算法”和“对称密钥算法”的区别是:“传统算法”只有一个Key,加密、解密均使用相同的Key;“公钥算法”每个用户有两个Key,一个是公开的“公钥”(Public Key),另外一个是保密的“私钥”(Security Key)。使用“公钥算法”发送数据,首先取得对方的Public Key,使用Public Key对明文加密,得到密文。接收方只有使用自己的Security Key,才能还原密文。其他人(包括发送者在内)不知道接收方的Security Key,就无法知道原文是什么。“公钥算法”的加密使用可以保证传送以密文发送,且其他人在没有接收方Security Key的情况下无法解读信息。

在现实中,由于RSA的执行速度非常慢,因此通常要求很高的系统通常会综合使用3类算法以实现“数据加密传输、不可伪造、不可抵赖”。例如发送方老李和接收方小明均有自己的不公开的Security Key,也有公开的Public Key。当老李要给小明发信息:

(1) 用HASH算法对明文运算,得到签名K1。K1的长度固定,通常比明文要短很多。

(2) 使用RSA签名算法,用自己的Security Key对K1进行签名,得到U1。

(3) 生成足够长的随机数R1,使用小明的Public Key对随机数R1进行RSA类“公钥加密”运算,得到SR1。

(4) 使用DES等“传统加密算法”,把SR1作为Key对明文进行加密,得到密文C1。

最后发送三者:“签名U1”、“解密Key──SR1”和“密文C1”。

小明在取得这三者后,

(1) 首先使用自己的SK,对SR1执行RSA解密,得到老李生成的随机数R1。

(2) 使用DES解密算法,把R1作为Key,解开“密文C1”,得到明文。

(3) 用HASH算法对明文运算,得到签名K2。

(4) 使用RSA签名算法,用老李的Public Key对K2进行运算,得到结果U2。若U1与U2相同,签名验证通过;否则是伪造。

著名的电子邮件加密系统PGP的操作流程就与此类似。Internet上电子商务常用的SSL──Security Socket Layer,也综合采用了上述方法。

实际应用可根据要求,综合考虑一种或多种加密方法解决问题。

特别申明

本栏目的文章都是本人从网上搜集而来,仅供大家学习研究之用,请不要用于商业目的!其中署名“佚名”的,意思是作者不详。如果某些文章未署你的名字,请来信告知,我会补上的。如果你认为某些文章侵犯了你的正当权宜,也请来信,我会将它删除。