RSA 加密算法(.NET)

using System;
using System.Collections.Generic;
using System.Security.Cryptography;
using System.Web;
using System.IO;
/// <summary>
/// Summary description for RSAEncrption
/// </summary>
public class RSAEncrption
{

    public RSAEncrption()
    {
        //
        // TODO: Add constructor logic here
        //
    }

    /// <summary>
    /// 生成XML格式公钥与私钥
    /// </summary>
    /// <param name="privateKeyPath"></param>
    /// <param name="publicKeyPath"></param>
    public static void RSAKey(string privateXmlKeyPath, string publicXmlKeyPath)
    {
        RSACryptoServiceProvider rsaProvider = new RSACryptoServiceProvider();
        //only public key
        SaveKey(privateXmlKeyPath, rsaProvider.ToXmlString(false));
        //public and private key
        SaveKey(publicXmlKeyPath, rsaProvider.ToXmlString(true));
    }

    /// <summary>
    /// 保存XML格式公钥与私钥
    /// </summary>
    /// <param name="path"></param>
    /// <param name="key"></param>
    private static void SaveKey(string path, string key)
    {
        //create a file, if the file already exists, it will be overwritten.
        using (FileStream filestream = new FileStream(path, FileMode.Create))
        {
            using (StreamWriter sw = new StreamWriter(filestream))
            {
                sw.Write(key);
            }
        }
    }

    /// <summary>
    /// UnicodeEncoding编码进行RSA加密
    /// </summary>
    /// <param name="content">待加密数据</param>
    /// <param name="publicXmlKey">XML格式公钥</param>
    /// <returns></returns>
    public static string RSAEncrypt(string content, string publicXmlKey)
    {
        using (RSACryptoServiceProvider rsa = new RSACryptoServiceProvider())
        {
            rsa.FromXmlString(publicXmlKey);
            System.Text.UnicodeEncoding unicode = new System.Text.UnicodeEncoding();
            byte[] data = unicode.GetBytes(content);
            byte[] encryptedData = rsa.Encrypt(data, false);
            return Convert.ToBase64String(encryptedData);
        }
    }
    /// <summary>
    /// UnicodeEncoding编码进行RSA解密
    /// </summary>
    /// <param name="content">待解密数据</param>
    /// <param name="privateXmlKey">XML格式私钥</param>
    /// <returns></returns>
    public static string RSADecrypt(string content, string privateXmlKey)
    {
        using (RSACryptoServiceProvider rsa = new RSACryptoServiceProvider())
        {
            byte[] encryptedData = Convert.FromBase64String(content);
            rsa.FromXmlString(privateXmlKey);
            byte[] data = rsa.Decrypt(encryptedData, false);
            System.Text.UnicodeEncoding unicode = new System.Text.Uni
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值