一 用RSA生成簽名
在RSA中,被簽名的消息、密鑰以及最終生成的簽名都是以數字形式表示的。在對文本進行簽名時,需要事先對文本編碼成數字。用RSA生成簽名的過程可用下列公式來表述:
這里所使用的D和N就是簽名者的私鑰。簽名就是對消息的D次方求mod N的結果,也就是說將消息和自己相乘D次,然后再除以N求余數,最后求得的余數就是簽名。
生成簽名后,發送者就可以將消息和簽名發送給接收者了。
二 用RSA驗證簽名
RSA的簽名驗證過程可用下列公式來表述:
這里所使用的E和N就是簽名者的公鑰。接收者計算簽名的E次方並求mod N,得到“由簽名求得的消息”,並將其與發送過來的“消息”內容進行對比,如果兩者一致,則簽名驗證成功,否則簽名驗證失敗。
RSA的簽名生成和驗證過程見下表:
三 實戰
我們通過具體的數字,用RSA來實際生成和驗證簽名。
公鑰:E=5;N=323
私鑰:D=29;N=323
由於N為323,因此消息需要為0~322這個范圍內的整數。在這里假設我們需要對123這個消息進行簽名。
1 生成簽名
下面用私鑰(D,N)=(29,323)來生成消息123的簽名。
消息的D次方 mod N= 123的29次方 mod 323 =157
簽名是157.向接收者發送的內容為:
(消息,簽名)=(123,157)這兩個數字。
2 驗證簽名
接收者收到的內容為:
(消息,簽名)=(123,157)
用公鑰(E,N)=(5,323)來計算由簽名求得的消息。
簽名的E次方 mod N = 157的5次方 mod 323=123
我們得到的消息123與發送者直接發過來的消息123是一致的,因此簽名驗證成功。
————————————————
版權聲明:本文為CSDN博主「cakincqm」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/chengqiuming/article/details/82831835