zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    Hibernate中使用Spring Data JPA
    Spring Boot入门——全局异常处理
    Spring Boot入门——Redis
    Spring Boot入门——集成Mybatis
    Spring Boot入门——JDBCTemplate使用及其相关问题解决
    Spring Boot连接Mysql数据库问题解决
    Spring Boot入门——JPA
    Spring Boot入门——tomcat配置
    Spring Boot 配置文件
    启动图案配置
  • 原文地址:https://www.cnblogs.com/ChengWenHao/p/CSharpRSA.html
Copyright © 2011-2022 走看看