Unity RSA加解密

/// <summary>
/// RSA加解密 支持中文
/// -=-使用方法-=-
/// 1. 调用 RSAGenerateKey 保存公钥和私钥
/// 2. 加密 RSAEncrypt("", m_public);
/// 3. 解密 RSADecrypt(m_byteArray, m_private);
/// </summary>
public class LoveNeon_RSA
{
    /// <summary>
    /// 生成RSA私钥 公钥
    /// </summary>
    /// <param name="privateKey"></param>
    /// <param name="publicKey"></param>
    public static void RSAGenerateKey(ref string privateKey, ref string publicKey)
    {
        System.Security.Cryptography.RSACryptoServiceProvider rsa = new System.Security.Cryptography.RSACryptoServiceProvider();
        //ToXmlString(bool) - 创建并返回包含当前 RSA 对象的密钥的 XML 字符串。
        //true 表示同时包含 RSA 公钥和私钥;false 表示仅包含公钥。
        //获取私钥
        privateKey = rsa.ToXmlString(true);
        //获取公钥
        publicKey = rsa.ToXmlString(false);
    }

    /// <summary>
    /// 用RSA公钥 加密
    /// </summary>
    /// <param name="_str">需要加密的内容</param>
    /// <param name="_publicKey">公钥</param>
    /// <returns></returns>
    public static byte[] RSAEncrypt(string _str, string _publicKey)
    {
        System.Security.Cryptography.RSACryptoServiceProvider rsa = new System.Security.Cryptography.RSACryptoServiceProvider();
        rsa.FromXmlString(_publicKey);
        //转成byte[]
        byte[] byteData = System.Text.Encoding.UTF8.GetBytes(_str);
        //获取加密后的数据
        byte[] encryptData = rsa.Encrypt(byteData, false);
        //不能转成string保存 必须用byte[]数据来解密
        /*
        //如果非要转成string 请使用以下步骤
        //string result = System.Text.Encoding.UTF8.GetString(m_byteArray);
        */
        //返回byte[]数据
        return encryptData;
    }

    /// <summary>
    /// 用RSA私钥 解密
    /// </summary>
    /// <param name="data"></param>
    /// <param name="privateKey"></param>
    /// <returns></returns>
    public static string RSADecrypt(byte[] _data,string _privateKey)
    {
        System.Security.Cryptography.RSACryptoServiceProvider rsa = new System.Security.Cryptography.RSACryptoServiceProvider();
        rsa.FromXmlString(_privateKey);
        //获取解密后的数据
        byte[] decryptData = rsa.Decrypt(_data, false);
        //转成string
        string resultStr = System.Text.Encoding.UTF8.GetString(decryptData);
        return resultStr;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

贝贝lx

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值