rsa驗籤中文 RSA簽名及驗籤原理解析

2021-10-12 23:30:34 字數 1052 閱讀 9020

一、名詞解釋

公鑰rsa 金鑰體系中對外公開的部分,通常用於資料加密、驗證數字簽名。

私鑰rsa 金鑰體系中非公開的部分,通常用於資料解密、資料簽名。

數字簽名

就是只有資訊的傳送者才能產生的,別人無法偽造的一段數字串,它同時也是對傳送者傳送的資訊的真實性的乙個證明。

二、為什麼要使用簽名

在系統間報文互動為保證上送報文可靠性[防止中間人攻擊],通常做法是在報文中加上校驗字[數字簽名],並約定好相關演算法。

三、實現

為方便系統間互動,本文直接講述原理,對於rsa_sign 及 rsa_verify的使用下期進行介紹。

簽名對需要上送的報文[en_data]計算特徵值[sign_block],相關演算法包括[md5、sha1、sha256、sha512等等]。

使用私鑰[pri_key]對sign_block加密獲得數字簽名[sign]。

將sign與en_data打包傳送給對方。

驗籤解析收到的報文,拆分為sign 及 en_data。

對en_data計算特徵值[sign_block],相關演算法包括[md5、sha1、sha256、sha512等等雙方協商]。

使用公鑰[pub_key]對sign解密,獲得sign_block1。

比較sign_block 和 sign_block1,若匹配則驗證成功,報文未被篡改。

生成公私鑰對int rsa_gen_der_key(int key_length, unsigned char * prik, unsigned char * pubk) elseelse{

memcpy(ming + rsa_j,rsa_out,iret);

rsa_j += iret;

if (pubk)

free(pubk);

if (pubkey)

rsa_free(pubkey);

return iret;

誤區公鑰[pub_key]、私鑰[pri_key]在金鑰體系中是平等的;並不是公鑰只能加密,私鑰只能解密;私鑰也可以用來加密,然後使用公鑰解密,只不過我們對這一操作區了個別名叫[簽名]和[驗籤]。

RSA簽名與驗籤

rsa演算法除了可以進行加解密以外,還可以用來簽名與驗籤。rsa用來進行簽名與驗簽時是使用私鑰進行簽名,公鑰進行驗籤的。這點與加解密的時候剛好相反。加解密時使用公鑰加密,私鑰解密。簽名和驗籤是通過signature物件進行的。以下是乙個使用signature進行簽名的示例。初始化signature時...

RSA簽名,驗籤的理解

假設一下,我找了兩個數字,乙個是1,乙個是2。我喜歡2這個數字,就保留起來,不告訴你們 私鑰 然後我告訴大家,1是我的公鑰。我有乙個檔案,不能讓別人看,我就用1加密了。別人找到了這個檔案,但是他不知道2就是解密的私鑰啊,所以他解不開,只有我可以用 數字2,就是我的私鑰,來解密。這樣我就可以保護資料了...

RSA簽名和驗籤說明

最近遇到乙個專案,需要進行rsa的驗籤,rsa的金鑰為2048位即256個位元組長。上游是先對乙個檔案進行sha256做hash,得到32位元組的摘要,然後進行填充,填充規則為前面兩個位元組為0x00,0x01,然後填充全ff,接下來是32位元組的摘要資料,這樣填充之後的總資料長度為256位元組,然...