您好,登錄后才能下訂單哦!
RSA如何實(shí)現(xiàn)C# 加密,很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。
RSA實(shí)現(xiàn)C# 加密首先我們來了解下什么是RSA ,它屬于不對(duì)稱加密,其原理就是使用一個(gè)公鑰一個(gè)私鑰,公鑰可以公開用以加密,私鑰嚴(yán)格保密用于解密,那么這樣大家知道了RSA 適合于數(shù)據(jù)量不大的加密,比如加密對(duì)稱加密的密鑰。
RSA實(shí)現(xiàn)C# 加密
RSACryptoServiceProvider 的名稱空間是:
System.Security. CryptographyRSACryptoServiceProvider rsaSend = new RSACryptoServiceProvider(); string plaintext = "明文"; //明文 byte[] ciphertext = rsaSend.Encrypt( System.Text.Encoding.UTF8.GetBytes(plaintext), false); //加密后 lbl.Text = Convert.ToBase64String(ciphertext); //顯示加密后的,為了顯示不可見字符,使用的是 Base64 編碼。
使用 RSACryptoServiceProvider() 創(chuàng)建 RSACryptoServiceProvider 實(shí)例時(shí),自動(dòng)產(chǎn)生密鑰。
RSA 實(shí)際應(yīng)用中是:接收方產(chǎn)生公鑰和私鑰,發(fā)送方用其公鑰加密,再把加密后的內(nèi)容發(fā)送給接收方。
CspParameters 的名稱空間是:
System.Security.CryptographyCspParameters cpSend = new CspParameters(); //Csp = Cryptography Service Provider CspParameters cpReceive = new CspParameters(); cpSend.KeyContainerName = "SendTestContainer"; cpReceive.KeyContainerName = "ReceiveTestContainer"; RSACryptoServiceProvider rsaSend = new RSACryptoServiceProvider(cpSend); ; RSACryptoServiceProvider rsaReceive = new RSACryptoServiceProvider(cpReceive); rsaSend.FromXmlString(rsaReceive.ToXmlString(false)); //發(fā)送方使用接收方給它的公鑰進(jìn)行加密 string plaintext = "前幾天我碰到一個(gè)朋友,約我跟馬賊打架, 我立馬答應(yīng)了他,因?yàn)槲矣X得這件事好無聊。"; byte[] ciphertext = rsaSend.Encrypt(System.Text.Encoding.UTF8.GetBytes( plaintext), false); //加密后 byte[] decryption = rsaReceive.Decrypt(ciphertext, false); //解密后 lbl.Width = 760; lbl.Text = ""; lbl.Text += Convert.ToBase64String(ciphertext) + "﹤br /﹥"; //顯示加密后的 lbl.Text += System.Text.Encoding.UTF8.GetString(decryption) + "﹤br /﹥"; //顯示解密后的 lbl.Text += Server.HtmlEncode(rsaSend.ToXmlString(false)) + "﹤br /﹥"; //顯示發(fā)送方公鑰 lbl.Text += Server.HtmlEncode(rsaReceive.ToXmlString(true)) + "﹤br /﹥"; //顯示接收方公鑰和私鑰 lbl.Text += Server.HtmlEncode(rsaReceive.ToXmlString(false)) + "﹤br /﹥"; //顯示接收方公鑰 rsaSend.PersistKeyInCsp = true; //密鑰要保存起來 //rsaSend.Clear(); rsaReceive.PersistKeyInCsp = true; //rsaReceive.Clear();
在上面的代碼中,我們使用 CspParameters 將密鑰保存起來,ToXmlString 和 FromXmlString 將接收方的公鑰告訴給發(fā)送方。
看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注億速云行業(yè)資訊頻道,感謝您對(duì)億速云的支持。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。