rsa加解密:
1024位的證書,加密時最大支援117個位元組,解密時為128;
2048位的證書,加密時最大支援245個位元組,解密時為256。
加密時支援的最大位元組數:證書位數/8 -11(比如:2048位的證書,支援的最大加密位元組數:2048/8 - 11 = 245)
.net中的rsa加密演算法為了提高安全性,在待加密資料前要新增一些隨機數,因此,使用.net中的rsa加密演算法一次最多加密117位元組資料(多於117位元組需要拆分成多段分別加密再連線起來),經過加密後得到乙個長度為128位元組的加密資料。
rsa實際可加密的明文長度最大也是1024bits,但問題就來了:如果小於這個長度怎麼辦?就需要進行padding,因為如果沒有padding,使用者無法區分解密後內容的真實長度,字串之類的內容問題還不大,以0作為結束符,但對二進位制資料就很難理解,因為不確定後面的0是內容還是內容結束符。只要用到padding,那麼就要占用實際的明文長度,於是才有117位元組的說法。我們一般使用的padding標準有noppadding、oaeppadding、pkcs1padding等,其中pkcs#1建議的padding就占用了11個位元組。如果大於這個長度怎麼辦?很多演算法的padding往往是在後邊的,但pkcs的padding則是在前面的,此為有意設計,有意的把第乙個位元組置0以確保m的值小於n。這樣,128位元組(1024bits)-減去11位元組正好是117位元組,但對於rsa加密來講,padding也是參與加密的,所以,依然按照1024bits去理解,但實際的明文只有117位元組了。
c#**實現:
rsa 填充模式:pkcs1padding分片大小: 加密244、解密256
internalstatic
string getencryptedmsg(string
xml)
else
++i;
}crypstream.position = 0
; encrypteddata =crypstream.tobytes();}}
}return bitconverter.tostring(encrypteddata).replace("
-", string
.empty);
}internal
static
byte getdecryptedmsg(byte
encryptedbytes)
else
++i;
}decrypstream.position = 0
; decrypteddata =decrypstream.tobytes();}}
return
decrypteddata;
}}
Java RSA 分段加解密
rsa加解密 1024位的證書,加密時最大支援117個位元組,解密時為128 2048位的證書,加密時最大支援245個位元組,解密時為256。加密時支援的最大位元組數 證書位數 8 11 比如 2048位的證書,支援的最大加密位元組數 2048 8 11 245 public static byte...
C RSA加密 解密
rsa公鑰加密演算法是1977年由ron rivest adi shamirh和lenadleman在 美國麻省理工學院 開發的。rsa取名來自開發他們三者的名字。rsa是目前最有影響力的公鑰加密演算法,它能夠抵抗到目前為止已知的所有密碼攻擊,已被iso推薦為公鑰資料加密標準。rsa演算法基於乙個十...
加解密方法
imports system imports system.security.cryptography imports system.text imports system.io public class encryptor private shared iv as byte private sha...