博客專欄

        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 

         


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




        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 噶尔县| 吉首市| 含山县| 察哈| 历史| 石家庄市| 清徐县| 旺苍县| 嵊州市| 托克逊县| 天长市| 峨眉山市| 兰坪| 高安市| 晴隆县| 大兴区| 江阴市| 青田县| 枝江市| 汝阳县| 宾阳县| 武宣县| 胶州市| 青岛市| 兰溪市| 包头市| 沧州市| 行唐县| 青海省| 五原县| 平塘县| 靖江市| 克拉玛依市| 洱源县| 溆浦县| 贡山| 滕州市| 仲巴县| 铜山县| 上林县| 和顺县|