非對稱加密演算法RSA使用注意事項

2021-05-10 08:41:11 字數 832 閱讀 6530

第乙個問題,也是最重要的乙個——rsa無法對超過117位元組的資料進行加密!切記!其實也勿需要求對更大資料的加密,雖然網上已經有相關解決方案,比如biginteger專案。但這點確實需要注意,如果對大於117位元組的資料加密就會拋異常出來,說法還有點莫名其妙。考慮下rsa的主要用途就可以理解了,一般我們使用rsa的主要用途是進行數字簽名,另外就是對「對稱加密」演算法的key和iv向量進行加密;

第二個問題,假設要對乙個文字檔案(比如xml檔案)中的某些資料進行加密,加密後再寫入文字檔案怎麼辦呢?(如果將加密後的byte陣列直接以流的形式寫入檔案,則無此問題)這就涉及到乙個byte到string的轉換問題,有的人馬上會說,這簡單嘛,用encoding.default.getstring唄,果真如此的話,也就沒有本問題了!如果你使用encoding.default.getstring儲存加密結果到檔案中,再解密的話你就會遇到下面這個異常:

原因是因為使用encoding.default.getstring()對加密後的byte(為了後文方便,此處賦予其乙個變數名right)進行處理後,再寫入文字檔案,解密的時候再使用encoding.default.getbytes()對將加密內容(string型別)轉換得到byte陣列,這個時候得到的byte陣列(變數名:wrong)已經不是前文的那個right變數來,內容和大小都不同!你拿乙個錯誤的字串去解密當然會報「不正確的資料」了,確實不正確嘛!

1)加密

2)解密

好了,現在一切ok!!順便說一下,rsa無法對超過128 byte的資料進行解密。

後記,今天突然想到可以base64編碼,看來前面繞路了,下面我們使用base64編碼再來實現一次,非常簡單:

1)加密

2)解密

RSA 非對稱加密演算法

1.對稱加密 甲方選擇某一種加密規則,對資訊進行加密 乙方使用同一種規則,對資訊進行解密。非對稱加密 乙方生成兩把金鑰 公鑰和私鑰 公鑰是公開的,任何人都可以獲得,私鑰則是保密的。甲方獲取乙方的公鑰,然後用它對資訊加密。乙方得到加密後的資訊,用私鑰解密。2.尤拉定理 rsa演算法的核心 可以大大簡化...

非對稱加密演算法 RSA

1 非對稱加密過程 國內使用的是雙證書體系 即使用者同時擁有簽名證書 和加密證書 兩張證書。簽名證書 是使用者的身份驗證是和ca協商的結果 加密證書 是用來對資訊進行加密,是使用者和秘鑰管理系統生成 過程是生成公鑰和私鑰的過程,基於rsa演算法實現 過程是ca對使用者的身份進行簽名,目的是驗證a的身...

非對稱加密演算法 RSA

rsa加密演算法於1977年由美國麻省理工學院的ronal rivest,adi shamir和len adleman三位年輕教授提出,並以三人的姓氏rivest,shamir和adleman命名為rsa演算法。這三位科學家榮獲2002年度圖靈獎,以表彰他們在演算法方面的突出貢獻。該演算法利用了數論...