RSA加密算法簽名與驗(yàn)簽

RSA加密算法過程簡

A和B進(jìn)行加密通信時(shí),B首先要生成一對密鑰。一個(gè)是公鑰,給A,B自己持有私鑰。A使用B的公鑰加密要加密發(fā)送的內(nèi)容,然后B在通過自己的私鑰解密內(nèi)容。

要想B發(fā)送消息,A會先計(jì)算出消息的消息摘要,然后使用自己的私鑰加密這段摘要加密,最后將加密后的消息摘要和消息一起發(fā)送給B,被加密的消息摘要就是“簽名”。

RSA加密算法簽名與驗(yàn)簽

B收到消息后,也會使用和A相同的方法提取消息摘要,然后使用A的公鑰解密A發(fā)送的來簽名,并與自己計(jì)算出來的消息摘要進(jìn)行比較。如果相同則說明消息是A發(fā)送給B的,同時(shí),A也無法否認(rèn)自己發(fā)送消息給B的事實(shí)。

其中,A用自己的私鑰給消息摘要加密成為“簽名”;B使用A的公鑰解密簽名文件的過程,就叫做“驗(yàn)簽”。

數(shù)字簽名的作用是保證數(shù)據(jù)完整性,機(jī)密性和發(fā)送方角色的不可抵賴性

下面是對簽名和驗(yàn)簽過程的簡要描述:

簽名過程:

1.A計(jì)算消息m的消息摘要,記為 h(m)

2.A使用私鑰(n,d)對h(m)加密,生成簽名s ,s滿足:

s=(h(m))^d mod n;

由于A是用自己的私鑰對消息摘要加密,所以只用使用s的公鑰才能解密該消息摘要,這樣A就不可否認(rèn)自己發(fā)送了該消息給B。

3.A發(fā)送消息和簽名(m,s)給B。

驗(yàn)簽過程:

1.B計(jì)算消息m的消息摘要,記為h(m);

2.B使用A的公鑰(n,e)解密s,得到

H(m) = s^e mod n;

3.B比較H(m)與h(m),相同則證明

下面簡單總結(jié)加密和解密的完整過程。

簽名過程:

1.A提取消息m的消息摘要h(m),并使用自己的私鑰對摘要h(m)進(jìn)行加密,生成簽名s

2.A將簽名s和消息m一起,使用B的公鑰進(jìn)行加密,生成密文c,發(fā)送給B。

驗(yàn)證過程:

1.B接收到密文c,使用自己的私鑰解密c得到明文m和數(shù)字簽名s

2.B使用A的公鑰解密數(shù)字簽名s解密得到H(m).

3.B使用相同的方法提取消息m的消息摘要h(m)

4.B比較兩個(gè)消息摘要。相同則驗(yàn)證成功;不同則驗(yàn)證失敗。