RSA不限長度非對稱加密解密C

2022-04-12 21:43:38 字數 3083 閱讀 5288

rsa 是常用的非對稱加密演算法。最近使用時卻出現了「不正確的長度」的異常,研究發現是由於待加密的資料超長所致。

.net framework 中提供的 rsa 演算法規定:

待加密的位元組數不能超過金鑰的長度值除以 8 再減去 11(即:rsacryptoserviceprovider.keysize / 8 - 11),而加密後得到密文的位元組數,正好是金鑰的長度值除以 8(即:rsacryptoserviceprovider.keysize / 8)。

所以,如果要加密較長的資料,則可以採用分段加解密的方式,實現方式如下:

1

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 }

:以上加密方法返回的字串型別為原始的 base-64 ,若要用於 url 傳輸,需另行處理!

以上文章**自

下面是自己修改

如果沒有證書請用以下方法

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

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 }

:以上加密方法返回的字串型別為原始的 base-64 ,若要用於 url 傳輸,需另行處理!

以上文章**自

下面是自己修改

如果沒有證書請用以下方法

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...