RSA數字簽名


一 用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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM