rsa加密 簽名解釋

2021-09-02 12:07:03 字數 1062 閱讀 7446

rsa的公鑰和私鑰到底哪個才是用來加密和哪個用來解密?

我們來回顧一下rsa的加密演算法。我們從公鑰加密演算法和簽名演算法的定義出發,用比較規範的語言來描述這一演算法。

rsa公鑰加密體制包含如下3個演算法:keygen(金鑰生成演算法),encrypt(加密演算法)以及decrypt(解密演算法)。

所以,從演算法描述中我們也可以看出:公鑰用於對資料進行加密,私鑰用於對資料進行解密。當然了,這個也可以很直觀的理解:公鑰就是公開的金鑰,其公開了大家才能用它來加密資料。私鑰是私有的金鑰,誰有這個金鑰才能夠解密密文。否則大家都能看到私鑰,就都能解密,那不就亂套了。

***************==分割線***************==

我們再來回顧一下rsa簽名體制。簽名體制同樣包含3個演算法:keygen(金鑰生成演算法),sign(簽名演算法),verify(驗證演算法)。

所以,在簽名演算法中,私鑰用於對資料進行簽名,公鑰用於對簽名進行驗證。這也可以直觀地進行理解:對乙個檔案簽名,當然要用私鑰,因為我們希望只有自己才能完成簽字。驗證過程當然希望所有人都能夠執行,大家看到簽名都能通過驗證證明確實是我自己籤的。

***************==分割線***************==

那麼,為什麼題主問這麼乙個問題呢?我們可以看到,rsa的加密/驗證,解密/簽字過程太像了。同時,rsa體制本身就是對稱的:如果我們反過來把e看成私鑰,d看成公鑰,這個體制也能很好的執行。我想正是由於這個原因,題主在學習rsa體制的時候才會出現這種混亂。那麼解決方法是什麼呢?建議題主可以學習一下其他的公鑰加密體制以及簽名體制。其他的體制是沒有這種對稱性質的。舉例來說,公鑰加密體制的話可以看一看elgamal加密,以及更安全的cramer-shoup加密。簽名體制的話可以進一步看看elgamal簽名,甚至是bls簽名,這些體制可能能夠幫助題主更好的弄清加密和簽名之間的區別和潛在的聯絡。

至於題主問的加密和簽名是怎麼結合的。這種體制叫做籤密方案(signcrypt),rsa中,這種籤密方案看起來特別特別像,很容易引起混亂。在此我不太想詳細介紹rsa中的加密與簽字結合的方案。我想提醒題主的是,加密與簽字結合時,兩套公私鑰是不同的。

RSA加密和簽名的流程

加密和簽名 概念 rsa雖然是非對稱加密,但是有獨特的對稱性 公鑰加密 私鑰解密 私鑰加密 公鑰解密 加密 接受方公鑰加密 接受方私鑰解密 簽名 傳送方私鑰加簽 傳送方公鑰解籤,加密和簽名一起使用才能防止洩露和篡改 1 a給b傳送資訊str 2 a先用sha256對資訊str計算,得到摘要z 3 a...

RSA非對稱加密演算法,加密和簽名

ras演算法 1 用rsa演算法生成一對金鑰,公鑰發放給外部客戶,私鑰自己保管 有以下應用場景 公鑰加密 私鑰解密 或者 私鑰簽名 公鑰驗證 2 非對稱加解密的理解 3 當該使用者傳送檔案時,用私鑰簽名,別人用他給的公鑰驗證簽名,可以保證該資訊是由他傳送的。當該使用者接受檔案時,別人用他的公鑰加密,...

加密 數字 RSA加密及數字簽名詳解

rsa是目前應用最廣泛地一種非對稱秘碼體制。它的安全性基於大整數的因式分解問題。對稱秘鑰指通訊雙方都使用同乙個秘鑰去加密解密 非對稱秘鑰指通訊雙方使用乙個秘鑰對。其中公開的秘鑰叫公鑰 rsa是由羅納德 李維斯特 ron rivest 阿迪 薩莫爾 adi shamir 和倫納德 阿德曼 leonar...