C#中RSA加密與解密的實例詳解
更新時間:2019年08月22日 09:58:05 作者:在代碼的世界里游走
這篇文章主要介紹了C#中RSA加密與解密的實例代碼,代碼簡單易懂,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
1. RSA加密與解密 -- 使用公鑰加密、私鑰解密
public class RSATool
{
public string Encrypt(string strText, string strPublicKey)
{
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
rsa.FromXmlString(strPublicKey);
byte[] byteText = Encoding.UTF8.GetBytes(strText);
byte[] byteEntry = rsa.Encrypt(byteText, false);
return Convert.ToBase64String(byteEntry);
}
public string Decrypt(string strEntryText,string strPrivateKey)
{
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
rsa.FromXmlString(strPrivateKey);
byte[] byteEntry = Convert.FromBase64String(strEntryText);
byte[] byteText = rsa.Decrypt(byteEntry, false);
return Encoding.UTF8.GetString(byteText);
}
public Dictionary<string,string> GetKey()
{
Dictionary<string, string> dictKey = new Dictionary<string, string>();
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
dictKey.Add("PublicKey", rsa.ToXmlString(false));
dictKey.Add("PrivateKey", rsa.ToXmlString(true));
return dictKey;
}
}
測試:
RSATool myRSA = new RSATool();
Dictionary<string, string> dictK = new Dictionary<string, string>();
dictK = myRSA.GetKey();
string strText = "123456";
Console.WriteLine("要加密的字符串是:{0}", strText);
string str1 = myRSA.Encrypt("123456", dictK["PublicKey"]);
Console.WriteLine("加密后的字符串:{0}", str1);
string str2 = myRSA.Decrypt(str1, dictK["PrivateKey"]);
Console.WriteLine("解密后的字符串:{0}", str2);

2. RSA加密與解密 -- 使用同一個密鑰容器進行加密與解密
public class RSAToolX
{
public string Encrypt(string strText)
{
CspParameters CSApars = new CspParameters();
CSApars.KeyContainerName = "Test001";
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(CSApars);
byte[] byteText = Encoding.UTF8.GetBytes(strText);
byte[] byteEntry = rsa.Encrypt(byteText, false);
return Convert.ToBase64String(byteEntry);
}
public string Decrypt(string strEntryText)
{
CspParameters CSApars = new CspParameters();
CSApars.KeyContainerName = "Test001";
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(CSApars);
byte[] byteEntry = Convert.FromBase64String(strEntryText);
byte[] byteText = rsa.Decrypt(byteEntry, false);
return Encoding.UTF8.GetString(byteText);
}
}
測試 :
RSAToolX myRSA = new RSAToolX();
string strText = "123456";
Console.WriteLine("要加密的字符串是:{0}", strText);
string str1 = myRSA.Encrypt("123456");
Console.WriteLine("加密后的字符串:{0}", str1);
string str2 = myRSA.Decrypt(str1);
Console.WriteLine("解密后的字符串:{0}", str2);

總結(jié)
以上所述是小編給大家介紹的C#中RSA加密與解密的實例詳解,希望對大家有所幫助,如果大家有任何疑問歡迎給我留言,小編會及時回復(fù)大家的!
相關(guān)文章
C# menuStrip控件實現(xiàn)鼠標滑過自動彈出功能
MenuStrip 控件是 Visual Studio 和 .NET Framework 中的功能。使用該控件,可以輕松創(chuàng)建 Microsoft Office 中那樣的菜單。本文給大家分享menuStrip鼠標滑過自動彈出效果2021-07-07
C# 實現(xiàn)SDL2進行視頻播放窗口截圖和字幕添加
這篇文章主要介紹了C# 實現(xiàn)SDL2進行視頻播放窗口截圖和字幕添加,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-12-12
C#使用TCP協(xié)議實現(xiàn)數(shù)據(jù)發(fā)送和接受的方法
這篇文章主要介紹了c#使用TCP協(xié)議實現(xiàn)數(shù)據(jù)發(fā)送和接受,使用TCP協(xié)議實現(xiàn)數(shù)據(jù)的發(fā)送和接受包括客戶端和服務(wù)端兩個部分,本文通過實例代碼介紹的非常詳細,需要的朋友可以參考下2024-04-04
C#中的Task.WaitAll和Task.WaitAny方法介紹
這篇文章介紹了C#中的Task.WaitAll和Task.WaitAny方法,文中通過示例代碼介紹的非常詳細。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-04-04
C#使用iCSharpcode進行文件壓縮實現(xiàn)方法
這篇文章主要介紹了C#使用iCSharpcode進行文件壓縮實現(xiàn)方法,末尾附有完整實例,有助于大家參考借鑒,需要的朋友可以參考下2014-08-08

