找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
打印 上一主題 下一主題
收起左側(cè)

RSA算法明文長(zhǎng)度介紹

 關(guān)閉 [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:349277 發(fā)表于 2021-11-17 11:09 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
RSA算法一次能加密的明文長(zhǎng)度與密鑰長(zhǎng)度成正比,如RSA 1024實(shí)際可加密的明文長(zhǎng)度最大是1024bits。如果小于這個(gè)長(zhǎng)度怎么辦?就需要進(jìn)行數(shù)據(jù)補(bǔ)齊(padding),因?yàn)槿绻麤]有padding,用戶則無法確分解密后內(nèi)容的真實(shí)長(zhǎng)度。字符串之類的內(nèi)容問題還不大,以0作為結(jié)束符,但對(duì)二進(jìn)制數(shù)據(jù)就很難理解,因?yàn)椴淮_定后面的0是內(nèi)容還是內(nèi)容結(jié)束符。
只要用到padding,那么就要占用實(shí)際的明文長(zhǎng)度。于是才有117字節(jié)的說法,即下面這種常見的說法:len_in_byte(raw_data) = len_in_bit(key)/8 -11,如1024bit的密鑰,一次能加密的內(nèi)容長(zhǎng)度為 1024/8 -11 = 117 byte。
我們一般使用的padding標(biāo)準(zhǔn)有NoPPadding、OAEPPadding、PKCS1Padding等,其中PKCS#1建議的padding就占用了11個(gè)字節(jié)。對(duì)于RSA加密來講,padding也是參與加密的,所以實(shí)際的明文只有117字節(jié)了。
關(guān)于PKCS#1 padding規(guī)范可參考:RFC2313 chapter 8.1,我們?cè)诎衙魑乃徒oRSA加密器前,要確認(rèn)這個(gè)值是不是大于位長(zhǎng),也就是如果接近位長(zhǎng),那么需要先padding再分段加密。除非我們是“定長(zhǎng)定量自己可控可理解”的加密不需要padding。
各種 padding 對(duì)輸入數(shù)據(jù)長(zhǎng)度的要求:
私鑰加密:  
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
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表