RSA加密算法是一種非對稱加密算法。在公開密鑰加密和電子商業中RSA被普遍使用。RSA是1977年由羅納德·李維斯特(Ron Rivest)、阿迪·薩莫爾(Adi Shamir)和倫納德·阿德曼(Leonard Adleman)一塊兒提出的。當時他們三人都在麻省理工學院工做。RSA就是他們三人姓氏開頭字母拼在一塊兒組成的。
C#使用RSA加密算法重要的一個類就是RSACryptoServiceProvider,這個類能夠生成一對公鑰和私鑰,同時也能夠加密和解密。html
生成公鑰和私鑰的代碼以下:算法
/// <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。這個不用多說,關鍵是導入私鑰和公鑰。ide
//方法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.htmlspa