码迷,mamicode.com
首页 > 其他好文 > 详细

RSA加密解密

时间:2018-04-11 17:12:09      阅读:151      评论:0      收藏:0      [点我收藏+]

标签:ons   test   path   rsa加密   sys   文件路径   私钥   decrypt   写入   

using System;
using System.IO;
using System.Security.Cryptography;
using System.Text;
using Microsoft.VisualStudio.TestTools.UnitTesting;

namespace UnitTest.OtherTest
{
[TestClass]
public class TestClass1
{
[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;
}
}

}

RSA加密解密

标签:ons   test   path   rsa加密   sys   文件路径   私钥   decrypt   写入   

原文地址:https://www.cnblogs.com/zjbky/p/8796623.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!