RSA非对称加密算法之公钥和私钥详细介绍
轉載來自https://www.zhihu.com/question/25912483/answer/31653639
RSA的加密算法
RSA的加密算法。我們從公鑰加密算法和簽名算法的定義出發,用比較規范的語言來描述這一算法。RSA公鑰加密體制包含如下3個算法:KeyGen(密鑰生成算法),Encrypt(加密算法)以及Decrypt(解密算法)。。密鑰生成算法以安全常數作為輸入,輸出一個公鑰PK,和一個私鑰SK。安全常數用于確定這個加密算法的安全性有多高,一般以加密算法使用的質數p的大小有關。越大,質數p一般越大,保證體制有更高的安全性。在RSA中,密鑰生成算法如下:算法首先隨機產生兩個不同大質數p和q,計算N=pq。隨后,算法計算歐拉函數。接下來,算法隨機選擇一個小于的整數e,并計算e關于的模反元素d。最后,公鑰為PK=(N, e),私鑰為SK=(N, d)。。加密算法以公鑰PK和待加密的消息M作為輸入,輸出密文CT。在RSA中,加密算法如下:算法直接輸出密文為。解密算法以私鑰SK和密文CT作為輸入,輸出消息M。在RSA中,解密算法如下:算法直接輸出明文為。由于e和d在下互逆,因此我們有:所以,從算法描述中我們也可以看出:公鑰用于對數據進行加密,私鑰用于對數據進行解密。當然了,這個也可以很直觀的理解:公鑰就是公開的密鑰,其公開了大家才能用它來加密數據。私鑰是私有的密鑰,誰有這個密鑰才能夠解密密文。否則大家都能看到私鑰,就都能解密,那不就亂套了。
RSA簽名體制
回顧一下RSA簽名體制。簽名體制同樣包含3個算法:KeyGen(密鑰生成算法),Sign(簽名算法),Verify(驗證算法)。。密鑰生成算法同樣以安全常數作為輸入,輸出一個公鑰PK和一個私鑰SK。在RSA簽名中,密鑰生成算法與加密算法完全相同。。簽名算法以私鑰SK和待簽名的消息M作為輸入,輸出簽名。在RSA簽名中,簽名算法直接輸出簽名為。注意,簽名算法和RSA加密體制中的解密算法非常像。。驗證算法以公鑰PK,簽名以及消息M作為輸入,輸出一個比特值b。b=1意味著驗證通過。b=0意味著驗證不通過。在RSA簽名中,驗證算法首先計算,隨后對比M’與M,如果相等,則輸出b=1,否則輸出b=0。注意:驗證算法和RSA加密體制中的加密算法非常像。所以,在簽名算法中,私鑰用于對數據進行簽名,公鑰用于對簽名進行驗證。這也可以直觀地進行理解:對一個文件簽名,當然要用私鑰,因為我們希望只有自己才能完成簽字。驗證過程當然希望所有人都能夠執行,大家看到簽名都能通過驗證證明確實是我自己簽的。
總結:
1.使用私鑰加密,公鑰解密,用于讓所有公鑰所有者驗證私鑰所有者的身份并且用來防止私鑰所有者發布的內容被篡改.但是不用來保證內容不被他人獲得.
2.使用公鑰加密,私鑰解密,用于向公鑰所有者發布信息,這個信息可能被他人篡改,但是無法被他人獲得.
3.如果甲想給乙發一個安全的保密的數據,那么應該甲乙各自有一個私鑰,甲先用乙的公鑰加密這段數據,再用自己的私鑰加密這段加密后的數據.最后再發給乙,這樣確保了內容即不會被讀取,也不會被篡改.
總結
以上是生活随笔為你收集整理的RSA非对称加密算法之公钥和私钥详细介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 深入理解Fabric环境搭建的详细过程
- 下一篇: Hyperledger Fabric 1