RSA加密解密
1、生成公钥和私钥(XML)
using(RSACryptoServiceProvider rsa = new RSACryptoServiceProvider()){ string publicKey=rsa.ToXmlString(false); // 公钥 string privateKey=rsa.ToXmlString(true); // 私钥 }
2、加密解密(XML)
public static class SHA256 { /// <summary> /// RSA加密 /// </summary> /// <param name="publickey"></param> /// <param name="content"></param> /// <returns></returns> public static string RSAEncrypt(string publickey, string content) { publickey = @"<RSAKeyValue><Modulus>g9Dz+d0OOPh/kSAPi7wDmIAIeGSlRhzVWYAGmnN3DvHfhdGbJXcks7/1psXWxMhVCRb1nY1+RY4ca3h5ZeayvqZkhh3dzlTFGZIZBME2IIxcwOMohAPfxvQdJMfUeyO1CVmOrTCxRZGwAa45711nPpcyzv3chKjKM4CEFfwuA08=</Modulus><Exponent>AQAB</Exponent></RSAKeyValue>"; RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(); byte[] cipherbytes; rsa.FromXmlString(publickey); cipherbytes = rsa.Encrypt(Encoding.UTF8.GetBytes(content), false); return Convert.ToBase64String(cipherbytes); } /// <summary> /// RSA解密 /// </summary> /// <param name="privatekey"></param> /// <param name="content"></param> /// <returns></returns> public static string RSADecrypt(string privatekey, string content) { privatekey = @"<RSAKeyValue><Modulus>g9Dz+d0OOPh/kSAPi7wDmIAIeGSlRhzVWYAGmnN3DvHfhdGbJXcks7/1psXWxMhVCRb1nY1+RY4ca3h5ZeayvqZkhh3dzlTFGZIZBME2IIxcwOMohAPfxvQdJMfUeyO1CVmOrTCxRZGwAa45711nPpcyzv3chKjKM4CEFfwuA08=</Modulus><Exponent>AQAB</Exponent><P>ugn2jsSj0A6WjTMUBvZX/TYHvGO28I0Aq0xLlvRj48Dzj5igE30VNg49K6r1575IqPaz3aQgOiBW25EwkrJpew==</P><Q>tWLzVs0D2saLRdbW95s/NPoIXAWNjnGGtJxgzVxNTFP/IZCLPp/EoM5prtkOZeMWjC1nxLOSXrM+IpP7SOhTPQ==</Q><DP>L+lM9Cu0PGrlXuvepoRe2LlHeL79aCoIGBWIChJaf1c74qld4GcARXGZU1uuBMa+k7UlUVlpa07Uz6supTkJbQ==</DP><DQ>PKBbN0sFG8265Vf+t/oS8VEVFDTi8JZvcNTH4jwUtgtpPj3C3Oan4Ru85S01i8aQVcAja/KdXLvKa+JMXj0Q/Q==</DQ><InverseQ>BygSMvcBiuA0+GUO7Lef2RgJ+5E6G0lWuegKNsR/KNRa87f5M/eyPjrrv/GDUHb4dL4OE5NSixLOEU6Be4v0hg==</InverseQ><D>Xty1eA/5+E39oDdueKVqAQnDDsF/n6GIeMyF9Ak8mWi/79IU0TWZGDMBWm/uS9fQOqZnRGdbhDrtgPpGg2svHrS8JZTuWLTbmXPKLkPBnYdjuidu0wuR/utth2Y2pdPKVgQCaSABuDXPfQH3XZ8QS96JrdIjF/mdBh3UqLGgy6E=</D></RSAKeyValue>"; RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(); byte[] cipherbytes; rsa.FromXmlString(privatekey); cipherbytes = rsa.Decrypt(Convert.FromBase64String(content), false); return Encoding.UTF8.GetString(cipherbytes); } }
var enc = SHA256.RSAEncrypt("", "dingjm"); Console.WriteLine(enc); var dec = SHA256.RSADecrypt("", enc); Console.WriteLine(dec);
3、生成公钥和私钥
RSACryptoServiceProvider RSA = new RSACryptoServiceProvider(); string public_Key = Convert.ToBase64String(RSA.ExportCspBlob(false)); string private_Key = Convert.ToBase64String(RSA.ExportCspBlob(true));
4、加密解密
/// <summary> /// RSA解密 /// </summary> /// <param name="privatekey"></param> /// <param name="content"></param> /// <returns></returns> public static string RSADecrypt(string privatekey, string content) { RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(); byte[] cipherbytes; rsa.ImportCspBlob(Convert.FromBase64String(privatekey)); cipherbytes = rsa.Decrypt(Convert.FromBase64String(content), false); return Encoding.UTF8.GetString(cipherbytes); } /// <summary> /// RSA加密XML /// </summary> /// <param name="publickey"></param> /// <param name="content"></param> /// <returns></returns> public static string RSAEncrypt(string publickey, string content) { RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(); byte[] cipherbytes; rsa.ImportCspBlob(Convert.FromBase64String(publickey)); cipherbytes = rsa.Encrypt(Encoding.UTF8.GetBytes(content), false); return Convert.ToBase64String(cipherbytes); }