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);
        }

 

posted @ 2022-03-15 16:35  江境纣州  阅读(170)  评论(0编辑  收藏  举报