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