RSA實現C 加密詳解

2021-06-16 05:27:11 字數 3449 閱讀 1281

rsa

實現c#

加密首先我們來了解下什麼是

rsa

,它屬於不對稱加密,其原理就是使用乙個公鑰乙個私鑰,公鑰可以公開用以加密,私鑰嚴格保密用於解密,那麼這樣大家知道了

rsa

適合於資料量不大的加密,比如加密對稱加密的金鑰。

rsa實現c#加密的過程例項:

rsacryptoserviceprovider的命名空間是:

1. system.security.   2.

cryptographyrsacryptoserviceprovider    3.

rsasend =newrsacryptoserviceprovider();   4.

5.stringplaintext = "明文

"; //明文 6.

7.byteciphertext = rsasend.encrypt(   8.

system.text.encoding.utf8.getbytes(plaintext),false);   9.

//加密後

10.

11.lbl.text = convert.tobase64string(ciphertext);   

12.//顯示加密後的,為了顯示不可見字元,使用的是

base64 

編碼。

使用rsacryptoserviceprovider()

建立rsacryptoserviceprovider

例項時,自動產生金鑰。

rsa

實際應用中是:接收方產生公鑰和私鑰,傳送方用其公鑰加密,再把加密後的內容傳送給接收方。

cspparameters的命名空間是:

13. system.security.cryptographycspparameters cpsend =   

14.newcspparameters(); 

//csp = cryptography service provider

15.cspparameters cpreceive =newcspparameters();  

16.cpsend.keycontainername = 

"sendtestcontainer"

;  

17. cpreceive.keycontainername =   

18."receivetestcontainer"

;  

19.

20.rsacryptoserviceprovider rsasend =   

21.newrsacryptoserviceprovider(cpsend); ;  

22.rsacryptoserviceprovider rsareceive =   

23.newrsacryptoserviceprovider(cpreceive);  

24.

25. rsasend.fromxmlstring(rsareceive.toxmlstring(false));   

26.//傳送方使用接收方給它的公鑰進行加密

27.

28.stringplaintext =   

29."前幾天我碰到乙個朋友,約我跟馬賊打架,

30.我立馬答應了他,因為我覺得這件事好無聊。

";  

31.byteciphertext =   

32.rsasend.encrypt(system.text.encoding.utf8.getbytes(  

33.plaintext),false); 

//加密後

34.bytedecryption =   

35.rsareceive.decrypt(ciphertext,false); 

//解密後

36.

37. lbl.width = 760;  

38.lbl.text = 

"";  

39.lbl.text +=   

40.convert.tobase64string(ciphertext) + "﹤

br /﹥"

;   

41.//顯示加密後的

42.lbl.text +=   

43.system.text.encoding.utf8.getstring(decryption) + "﹤

br /﹥"

;   

44.//顯示解密後的

45.lbl.text +=   

46.server.htmlencode(rsasend.toxmlstring(false)) + "﹤

br /﹥"

;  

47.

//顯示傳送方公鑰

48.lbl.text +=   

49.server.htmlencode(rsareceive.toxmlstring(true)) + "﹤

br /﹥"

;   

50.//顯示接收方公鑰和私鑰

51.lbl.text +=   

52.server.htmlencode(rsareceive.toxmlstring(false)) + "﹤

br /﹥"

;   

53. //

顯示接收方公鑰

54.

55. rsasend.persistkeyincsp =true

//金鑰要儲存起來

56.

57.rsareceive.persistkeyincsp =true;  

58.

在上面的**中,我們使用

cspparameters

將金鑰儲存起來,

toxmlstring

和fromxmlstring

將接收方的公鑰告訴給傳送方。

rsa實現c#

加密的實際操作就向你介紹到這裡,希望對你了解和學習

c# 加密以及

rsa的應用有所幫助。

加密 RSA加密之實現

private void btn rsa click object sender,eventargs e rsa加密 public static string rsaencrypt string publickey,string content rsa解密 public static string ...

C 非對稱加密RSA實現

今天應專案要求,做一非對稱加密,看了microsoft的 並不能匯出private 和 public key 當然,網上 這樣的例子很多,可沒找到關於如何匯入匯出key及byte與string 的相互轉化 呼叫了很多直接轉化的函式,轉化的過程中會有亂碼,導致加解密失敗。專案要求,生成乙個privat...

前端實現rsa加密

rsa加密演算法是一種非對稱加密演算法。對極大整數做因數分解的難度決定了rsa演算法的可靠性。換言之,對一極大整數做因數分解愈困難,rsa演算法愈可靠。假如有人找到一種快速因數分解的演算法的話,那麼用rsa加密的資訊的可靠性就肯定會極度下降。但找到這樣的演算法的可能性是非常小的。今天只有短的rsa鑰...