• C# RSA加密解密


    using System;
    using System.IO;
    using System.Security.Cryptography;
    using System.Text;
    using Microsoft.VisualStudio.TestTools.UnitTesting;
    
    namespace UnitTest.OtherTest
    {
        [TestClass]
        public class RSATestClass
        {
            [TestMethod]
            public void TestMethod()
            {
                //RSA测试实例
                string oldData = "taiyonghai";
                CreateRSAKey();
                string ciphertext = RSAEncrypt(oldData);
                Console.WriteLine("加密:"+ciphertext);
                string newData = RSADecrypt(ciphertext);
                Console.WriteLine("解密:"+newData);
            }
            // <summary>
            /// 创建RSA公钥私钥
            /// </summary>
            public void CreateRSAKey()
            {
                //设置[公钥私钥]文件路径
                string privateKeyPath = @"d:\PrivateKey.xml";
                string publicKeyPath = @"d:\PublicKey.xml";
                //创建RSA对象
                RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
                //生成RSA[公钥私钥]
                string privateKey = rsa.ToXmlString(true);
                string publicKey = rsa.ToXmlString(false);
                //将密钥写入指定路径
                File.WriteAllText(privateKeyPath, privateKey);//文件内包含公钥和私钥
                File.WriteAllText(publicKeyPath, publicKey);//文件内只包含公钥
            }
            /// <summary>
            /// 使用RSA实现加密
            /// </summary>
            /// <param name="data">加密数据</param>
            /// <returns></returns>
            public string RSAEncrypt(string data)
            {
                //C#默认只能使用[公钥]进行加密(想使用[公钥解密]可使用第三方组件BouncyCastle来实现)
                string publicKeyPath = @"d:\PublicKey.xml";
                string publicKey = File.ReadAllText(publicKeyPath);
                //创建RSA对象并载入[公钥]
                RSACryptoServiceProvider rsaPublic = new RSACryptoServiceProvider();
                rsaPublic.FromXmlString(publicKey);
                //对数据进行加密
                byte[] publicValue = rsaPublic.Encrypt(Encoding.UTF8.GetBytes(data), false);
                string publicStr = Convert.ToBase64String(publicValue);//使用Base64将byte转换为string
                return publicStr;
            }
            /// <summary>
            /// 使用RSA实现解密
            /// </summary>
            /// <param name="data">解密数据</param>
            /// <returns></returns>
            public string RSADecrypt(string data)
            {
                //C#默认只能使用[私钥]进行解密(想使用[私钥加密]可使用第三方组件BouncyCastle来实现)
                string privateKeyPath = @"d:\PrivateKey.xml";
                string privateKey = File.ReadAllText(privateKeyPath);
                //创建RSA对象并载入[私钥]
                RSACryptoServiceProvider rsaPrivate = new RSACryptoServiceProvider();
                rsaPrivate.FromXmlString(privateKey);
                //对数据进行解密
                byte[] privateValue = rsaPrivate.Decrypt(Convert.FromBase64String(data), false);//使用Base64将string转换为byte
                string privateStr = Encoding.UTF8.GetString(privateValue);
                return privateStr;
            }
        }
    
    }
  • 相关阅读:
    mobileSelect学习
    使用qrcode生成二维码
    点点点右边有内容
    搜索框search
    input样式和修改
    art-template模板引擎高级使用
    Nodejs中的路径问题
    异步编程(回调函数,promise)
    在nodejs中操作数据库(MongoDB和MySQL为例)
    MongoDB数据库
  • 原文地址:https://www.cnblogs.com/zjbky/p/8796623.html
Copyright © 2020-2023  润新知