转自:http://free.banzhu.com/s/salinelove/prog/ShowDetail.asp?id=37
一、数字签名
数字签名使用双钥密码加密和散列函数. 消息用散列函数处理得到消息搞要,再用双钥密码*的私钥对其进行加密,称为数字签名.
数字签名的原理如下:消息M用散列函数H得到的消息摘要h1=H(M),然后发送方用自己的双钥密码*的私钥KSA对这个消息摘要进行加密h’=EKSA(h1),形成发送方的数字签名.然后这个数字签名将作为消息M的附件随消息一起发送给消息的接收方,消息的接收方首先从接收方的原始消息M中计算出散列函数值h2=H(M),接着用发送双钥密码*的公钥KPA对数字签名进行解密DKPA(h’),得h1,如果h1=h2,则表明接收方收到的消息确实是发送方发送的,而且还可以确定此消息没有被修改过.
用表达式表示如下:
发送方: h1=H(M)
h’=EKSA(h1)
接收方: h2=H(M)
h1= DKPA(h’)
如果h1=h2则表明接收方收到的消息确实是发送方发送的,而且还可以确定此消息没有被修改过.
二、数字信封
发送方用一个随机产生的DES密钥加密原始数据(消息),然后用接受方的公钥加密DES密钥,称为消息的“数字信封”。将数字信封同DES加密的消息一起发送给接受方,接受者在接收到消息后,先用其私钥对“数字信封”进行解密(打开数字信封),得到发送方的DES密钥,再用此密钥去解密消息。只有用接受方的RSA私钥才能打开数字信封,这样确保了接受者的身份。
用表达式表示如下:
发送方:C1=EKDES(M)
C2=EKPB(KDES)
接收方: KDES=DKSB(C2)
M= DKDES(C1)
数字信封既克服了两种加密*的缺点,发挥了两种密码*的优点,又妥善解决了密钥传送的安全问题。