加密解密 簽名驗簽學習

基本概念:

加密:發送方利用接受方的公鑰對要發送的明文進行加密。

解密:接收方利用自己的私鑰進行解密。

公鑰與私鑰是配對的,用公鑰加密的文件,只有對應的私鑰才能解密,反過來,用私鑰加密,用對應的公鑰進行解密。

簽名:發送方用一個哈希函數從報文文本中生成報文摘要,然后用自己的私鑰對摘要進行加密,得到的就是這個報文對應的數字簽名,通常來說,發送方會將數字簽名和報文原文一并發送接收者,方便接收者進行驗簽。

驗簽:接收方得到原始報文和數字簽名后,用同一個哈希函數從報文中生成報文摘要A,另外,用發送方提供的公鑰對數字簽名進行解密,得到摘要B,對比A和B是否相同,就可得知報文有沒有被篡改過。


公鑰密碼體制:

原理就是加密密鑰與解密密鑰分離,這樣一個具體用戶就可將自己設計的加密密鑰和算法公諸于眾,而只保密解密密鑰。任何人都可利用這個加密密鑰和算法向該用戶發送加密信息,該用戶均可通過解密密鑰將之還原。公共密鑰密碼的優點就是不需要經安全渠道傳遞密鑰,大大簡化了密鑰管理。它的算法又是也稱之為公開密鑰算法或簡稱公約算法。

公鑰加密算法:

公鑰加密算法中使用最廣的是RSA,RSA使用兩個密鑰,一個公共密鑰,一個專用密鑰。如用其中一個加密,則可用另一個解密,密鑰長度從40到2048bit可變。加密是也把明文分成快,塊的大小可變,但不可能超過密鑰的長度,RSA算法吧每一塊明文轉化為與密鑰長度相同的密文塊,密鑰越長,加密效果越好,但加密解密的開銷也大,所以在安全和性能之間折中考慮,一般64位較為合適。RSA的一個比較知名的應用是SSL,在美國和加拿大SSL用128位RSA算法,由于出口限制,在其他地區(包括中國)通用的則是40位版本。

RSA算法基于一個十分簡單的數論事實:將兩大素數相乘十分容易,但是想要對其乘積進行因式分解卻極其困難,因此可以將乘積公開座位加密密鑰。質數:又稱素數,有無限個。一個大于1的自然數,除了1和它本身以外,不能被其他自然數整除。

RSA算法涉及三個參數,n、e1、e2.其中,n是兩個大指數p、q的積,n的二進制表示時所占用的尾數,就是密鑰長度。e1和e2是一對相關的值,e1可以隨意取,但要求e1與(p-1)*(q-1)互質;再選擇e2,要求(e2*e1) mod((p-1)*(q-1))=1.

其中(n,e1),(n,e2)就是密鑰對,其中(n,e1)為公鑰,(n,e2)為私鑰。RSA加解密的算法完全相同,設A為明文,B為密文,則:A=B^e2 mod n;B=A^e1 mod n;(公鑰加密機制中,一般用公鑰加密,私鑰解密) ? ? ?e1和e2可以互換使用,即:A=B^e1 mod n;B=A^e2 mod n;

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容