rsa 是常用的非對稱加密演算法。最近使用時卻出現了「不正確的長度」的異常,研究發現是由於待加密的資料超長所致。
.net framework 中提供的 rsa 演算法規定:
待加密的位元組數不能超過金鑰的長度值除以 8 再減去 11(即:rsacryptoserviceprovider.keysize / 8 - 11),而加密後得到密文的位元組數,正好是金鑰的長度值除以 8(即:rsacryptoserviceprovider.keysize / 8)。
所以,如果要加密較長的資料,則可以採用分段加解密的方式,實現方式如下:
1注:以上加密方法返回的字串型別為原始的 base-64 ,若要用於 url 傳輸,需另行處理!namespace
macroresolute.rsacryptoservice234
35return
convert.tobase64string(crypstream.toarray(), base64formattingoptions.none);36}
37}38}
3940
public
static string decrypt(this
string ciphertext)
4167
68return
rsacrypto.encoder.getstring(plaistream.toarray());69}
70}71}
7273
private
static
x509certificate2 retrievex509certificate()
7477
}78 }
以上文章**自
下面是自己修改
如果沒有證書請用以下方法
1///2
///3
///4
public
class
rsadecryptencrypt543
44return
convert.tobase64string(crypstream.toarray(), base64formattingoptions.none);45}
46}47}
4849
///50
///解密
rsa 是常用的非對稱加密演算法。最近使用時卻出現了「不正確的長度」的異常,研究發現是由於待加密的資料超長所致。
.net framework 中提供的 rsa 演算法規定:
待加密的位元組數不能超過金鑰的長度值除以 8 再減去 11(即:rsacryptoserviceprovider.keysize / 8 - 11),而加密後得到密文的位元組數,正好是金鑰的長度值除以 8(即:rsacryptoserviceprovider.keysize / 8)。
所以,如果要加密較長的資料,則可以採用分段加解密的方式,實現方式如下:
1注:以上加密方法返回的字串型別為原始的 base-64 ,若要用於 url 傳輸,需另行處理!namespace
macroresolute.rsacryptoservice234
35return
convert.tobase64string(crypstream.toarray(), base64formattingoptions.none);36}
37}38}
3940
public
static string decrypt(this
string ciphertext)
4167
68return
rsacrypto.encoder.getstring(plaistream.toarray());69}
70}71}
7273
private
static
x509certificate2 retrievex509certificate()
7477
}78 }
以上文章**自
下面是自己修改
如果沒有證書請用以下方法
1///2
///3
///4
public
class
rsadecryptencrypt543
44return
convert.tobase64string(crypstream.toarray(), base64formattingoptions.none);45}
46}47}
4849
///50
///解密
rsa加密解密, 非對稱加密
2016年3月17日 17 21 08 星期四 現在越來越懶了.參考 左邊是加密流程,右邊是解密流程 呃.有乙個錯別字,摘 2018 3 21 11 17 54 星期三 參考 所謂非對稱加密,其實很簡單,就是加密和解密需要兩把鑰匙 一把公鑰和一把私鑰 公鑰是公開的,任何人都可以獲取。私鑰是保密的,只...
RSA 非對稱加密與解密
private static string encrypt string msg,string publickey ms.position 0 byte decode new byte ms.length ms.read decode,0,int ms.length string decodeinf...
C 非對稱加密,RSA加解密示例
引入dll bouncycastle.crypto 金鑰實體 金鑰實體 public class rsakey 私鑰 public string privatekey rsa加密和解密 using system using system.collections.generic using syste...