C# RSA加密解密


RSA加密算法是一種非對稱加密算法。在公開密鑰加密和電子商業中RSA被廣泛使用。RSA是1977年由羅納德·李維斯特(Ron Rivest)、阿迪·薩莫爾(Adi Shamir)和倫納德·阿德曼(Leonard Adleman)一起提出的。當時他們三人都在麻省理工學院工作。RSA就是他們三人姓氏開頭字母拼在一起組成的。
C#使用RSA加密算法重要的一個類就是RSACryptoServiceProvider,這個類可以生成一對公鑰和私鑰,同時也可以加密和解密。

生成公鑰和私鑰的代碼如下:

/// <summary>
/// 生成一對公鑰和私鑰
/// </summary>
/// <returns></returns>
public KeyValuePair<string, string> GetKeyPair1()
{
    RSACryptoServiceProvider RSA = new RSACryptoServiceProvider();
    string public_Key = Convert.ToBase64String(RSA.ExportCspBlob(false));
    string private_Key = Convert.ToBase64String(RSA.ExportCspBlob(true));
    return new KeyValuePair<string, string>(public_Key, private_Key);
}
/// <summary>
/// 生成一對公鑰和私鑰
/// </summary>
/// <returns></returns>
public KeyValuePair<string, string> GetKeyPair2()
{
    RSACryptoServiceProvider RSA = new RSACryptoServiceProvider();
    string public_Key = RSA.ToXmlString(false);
    string private_Key = RSA.ToXmlString(true);
    return new KeyValuePair<string, string>(public_Key, private_Key);
}

加密方法,加密方法RSA.Encrypt,解密方法RSA.Decrypt。這個不用多說,關鍵是導入私鑰和公鑰。

//方法1
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
rsa.ImportCspBlob(Convert.FromBase64String(str_Public_Key));
//方法2
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
rsa.FromXmlString(privateKey);

 


 

RSA非對稱加密,支持公鑰加密私鑰解密,或者私鑰加密公鑰解密,但是C#卻只實現了公鑰加密私鑰解密,如果我們需要實現私鑰加密公鑰解密,就需要使用到第三方插件,“BouncyCastle.Crypto”,具體操作方法如下:

 

原文參考了:https://www.cnblogs.com/dj258/p/6049786.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM