博客專欄

        EEPW首頁 > 博客 > RSA算法明文長度介紹

        RSA算法明文長度介紹

        發布人:hanini 時間:2021-11-18 來源:工程師 發布文章


        RSA算法一次能加密的文長度與密鑰長度成正比,如RSA 1024實際可加密的明文長度最大是1024bits如果小于這個長度怎么辦?就需要進行數據補齊(padding,因為如果沒有padding,用戶無法確分解密后內容的真實長度字符串之類的內容問題還不大,以0作為結束符,但對二進制數據就很難理解,因為不確定后面的0是內容還是內容結束符。
        只要用到padding,那么就要占用實際的明文長度于是才有117字節的說法即下面這種常見的說法:len_in_byte(raw_data) = len_in_bit(key)/8 -11,如1024bit的密鑰,一次能加密的內容長度為 1024/8 -11 = 117 byte。

        我們一般使用的padding標準有NoPPadding、OAEPPadding、PKCS1Padding等,其中PKCS#1建議的padding就占用了11個字節。對于RSA加密來講,padding也是參與加密的,所以實際的明文只有117字節了。
        關于PKCS#1 padding規范可參考:RFC2313 chapter 8.1,我們在把明文送給RSA加密器前,要確認這個值是不是大于位長,也就是如果接近位長,那么需要先padding再分段加密。除非我們是“定長定量自己可控可理解”的加密不需要padding。

        各種 padding 對輸入數據長度的要求:  

        私鑰加密:  

        RSA_PKCS1_PADDING         RSA_size-11  

        RSA_NO_PADDING              RSA_size-0  

        RSA_X931_PADDING            RSA_size-2  

        公鑰加密  

        RSA_PKCS1_PADDING        RSA_size-11  

        RSA_SSLV23_PADDING        RSA_size-11  

        RSA_X931_PADDING           RSA_size-2  

        RSA_NO_PADDING               RSA_size-0  

        RSA_PKCS1_OAEP_PADDING      RSA_size-2 * SHA_DIGEST_LENGTH-2 

         


        *博客內容為網友個人發布,僅代表博主個人觀點,如有侵權請聯系工作人員刪除。




        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 贵南县| 惠州市| 方正县| 奈曼旗| 巩义市| 东兴市| 华宁县| 余江县| 台安县| 平果县| 深州市| 常宁市| 英超| 依兰县| 延津县| 巢湖市| 河源市| 虞城县| 肥城市| 从化市| 铜鼓县| 无棣县| 九台市| 屏东市| 大庆市| 齐齐哈尔市| 仁寿县| 莱州市| 左云县| 博乐市| 深圳市| 安图县| 扶绥县| 开原市| 会泽县| 三都| 苏州市| 曲阜市| 山东| 武川县| 灌南县|