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

  • 相关阅读:
    关于PHPExcel批处理及json数据处理
    PHP中一些通用和易混淆技术点的最佳编程实践
    PHP采集远程图片
    直接拿来用!最火的Android开源项目
    C#在FORM页面上将excel表格从SQL数据库导出,导入txt格式表格
    SAPABAP編輯器 快速代码提示功能(自動提示)
    SAPABAP编辑器 快速代码提示功能(自动提示)
    ABAP 声明内表,内表包含内表
    ABAP ALV新增可维护的新行
    自底向上,数字化转型的实践和思考
  • 原文地址:https://www.cnblogs.com/ChengWenHao/p/CSharpRSA.html
Copyright © 2011-2022 走看看