• 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);
    View Code

    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);
    View Code

  • 相关阅读:
    Html 表单表格 form table
    JavaWeb -- 服务器传递给Servlet的对象 -- ServletConfig, ServletContext,Request, Response
    JavaWeb -- Servlet运行过程 和 细节
    调用DLL中的过程和函数
    调用DLL中的过程和函数
    动态载入 DLL
    动态载入 DLL
    静态载入 DLL
    DLL的加载和调用
    静态载入 DLL
  • 原文地址:https://www.cnblogs.com/ChengWenHao/p/CSharpRSA.html
Copyright © 2020-2023  润新知