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

  • 相关阅读:
    类方法代码重构寻找坏味道
    迭代二分查找二分查找
    系统牛逼[置顶] 使用RAMP理解内在动机 Understanding Intrinsic Motivation with RAMP
    对象服务器Webservices获取天气
    手机服务器Android消息推送(二)基于MQTT协议实现的推送功能
    概率小数2013年阿里巴巴暑期实习招聘笔试题目(不完整,笔试时间:2013.5.5)
    像素颜色JavaFX示例简易图片处理工具
    算法队列SPFA算法详解
    选择文件Eclipse制作jar包
    nullnull推箱子
  • 原文地址:https://www.cnblogs.com/ChengWenHao/p/CSharpRSA.html
Copyright © 2011-2022 走看看