在好例子网,分享、交流、成长!
您当前所在位置:首页C# 开发实例C#语言基础 → unity工具类RSA加密和解密

unity工具类RSA加密和解密

C#语言基础

下载此实例
  • 开发语言:C#
  • 实例大小:1.62KB
  • 下载次数:23
  • 浏览次数:336
  • 发布时间:2020-04-13
  • 实例类别:C#语言基础
  • 发 布 人:新手上路K527
  • 文件格式:.rar
  • 所需积分:2
 相关标签: unity 工具

实例介绍

/**************************
 * 文件名:UEncrypt.cs;
 * 文件描述:RSA加密 解密;
 * 创建日期:2016/05/29;
 * Author:ThisisGame;
 * Page:https://github.com/ThisisGame/UEncrypt.git
 ***************************/
using System.IO;
using System.Text;
using System.Security.Cryptography;
using System;

namespace ThisisGame.UEncrypt
{
    public class UEncrypt
    {
        public static string publicKey = "<RSAKeyValue><Modulus>khiBttRxPUUZ03zFaILBnYb1CoH2ZF28Oi0Be0uIXnvtfBDGGRlCQRdHoDNINf6Ta00GLYV9YEcCZHPfpzn9Eo/1fH2SPtoJNGznQzoGnyFN3RioaTY1Mpd27WxrJ/R3XAuwzz456/1szzkEfojwzFwOwaFzt4s6/bDj e5DAG0=</Modulus><Exponent>AQAB</Exponent></RSAKeyValue>";
        /// <summary>
        /// 生成RSA私钥 公钥
        /// </summary>
        /// <param name="privateKey"></param>
        /// <param name="publicKey"></param>
        public static void RSAGenerateKey(ref string privateKey, ref string publicKey)
        {
            try
            {
                RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
                privateKey = rsa.ToXmlString(true);
                publicKey = rsa.ToXmlString(false);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        #region RSA加密函数
        /// <summary>
        /// 用RSA公钥 加密(数组-->数组)
        /// </summary>
        /// <param name="data"></param>
        /// <param name="publicKey"></param>
        /// <returns></returns>
        public static byte[] RSAEncrypt(byte[] data, string publicKey)
        {
            RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
            rsa.FromXmlString(publicKey);
            byte[] encryptData = rsa.Encrypt(data, false);
            return encryptData;
        }
        //##############################################################################  
        //RSA 方式加密  
        //KEY必须是XML的形式,返回的是字符串  
        //该加密方式有长度限制的! 
        //##############################################################################  
        /// <summary> 
        /// RSA的加密函数 
        /// </summary> 
        /// <param name="xmlPublicKey">公钥</param> 
        /// <param name="encryptString">待加密的字符串</param> 
        /// <returns></returns> 
        public static string RSAEncrypt(string xmlPublicKey, string encryptString)
        {
            try
            {
                byte[] PlainTextBArray;
                byte[] CypherTextBArray;
                string Result;
                System.Security.Cryptography.RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
                rsa.FromXmlString(xmlPublicKey);
                PlainTextBArray = (new UnicodeEncoding()).GetBytes(encryptString);//另两种种转换ByteConverter.GetBytes和Encoding.UTF8.GetBytes
                CypherTextBArray = rsa.Encrypt(PlainTextBArray, false);
                Result = Convert.ToBase64String(CypherTextBArray);
                return Result;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        /// <summary> 
        /// RSA的加密函数  
        /// </summary> 
        /// <param name="xmlPublicKey">公钥</param> 
        /// <param name="EncryptString">待加密的字节数组</param> 
        /// <returns></returns> 
        public static string RSAEncrypt(string xmlPublicKey, byte[] EncryptString)
        {
            try
            {
                byte[] CypherTextBArray;
                string Result;
                System.Security.Cryptography.RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
                rsa.FromXmlString(xmlPublicKey);
                CypherTextBArray = rsa.Encrypt(EncryptString, false);
                Result = Convert.ToBase64String(CypherTextBArray);
                return Result;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        #endregion
        #region RSA解密函数
        /// <summary>
        /// 用RSA私钥 解密
        /// </summary>
        /// <param name="data"></param>
        /// <param name="privateKey"></param>
        /// <returns></returns>
        public static byte[] RSADecrypt(byte[] data, string privateKey)
        {
            RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
            rsa.FromXmlString(privateKey);
            byte[] decryptData = rsa.Decrypt(data, false);
            return decryptData;
        }
        /// <summary> 
        /// RSA的解密函数 
        /// </summary> 
        /// <param name="xmlPrivateKey">私钥</param> 
        /// <param name="decryptString">待解密的字符串</param> 
        /// <returns></returns> 
        public static string RSADecrypt(string xmlPrivateKey, string decryptString)
        {
            try
            {
                byte[] PlainTextBArray;
                byte[] DypherTextBArray;
                string Result;
                System.Security.Cryptography.RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
                rsa.FromXmlString(xmlPrivateKey);
                PlainTextBArray = Convert.FromBase64String(decryptString);
                DypherTextBArray = rsa.Decrypt(PlainTextBArray, false);
                Result = (new UnicodeEncoding()).GetString(DypherTextBArray);
                return Result;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        /// <summary> 
        /// RSA的解密函数  
        /// </summary> 
        /// <param name="xmlPrivateKey">私钥</param> 
        /// <param name="DecryptString">待解密的字节数组</param> 
        /// <returns></returns> 
        public static string RSADecrypt(string xmlPrivateKey, byte[] DecryptString)
        {
            try
            {
                byte[] DypherTextBArray;
                string Result;
                System.Security.Cryptography.RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
                rsa.FromXmlString(xmlPrivateKey);
                DypherTextBArray = rsa.Decrypt(DecryptString, false);
                Result = (new UnicodeEncoding()).GetString(DypherTextBArray);
                return Result;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        } 
        #endregion 
        /// <summary>
        /// DES加密
        /// </summary>
        /// <param name="data">源数据</param>
        /// <param name="desrgbKey"></param>
        /// <param name="desrgbIV"></param>
        /// <returns></returns>
        public static byte[] DESEncrypt(byte[] data, byte[] desrgbKey, byte[] desrgbIV)
        {
            DESCryptoServiceProvider des = new DESCryptoServiceProvider();
            MemoryStream memoryStream = new MemoryStream();
            CryptoStream cryptoStream = new CryptoStream(memoryStream, des.CreateEncryptor(desrgbKey, desrgbIV), CryptoStreamMode.Write);
            cryptoStream.Write(data, 0, data.Length);
            cryptoStream.FlushFinalBlock();
            return memoryStream.ToArray();
        }
        /// <summary>
        /// DES解密
        /// </summary>
        /// <param name="data">源数据</param>
        /// <param name="desrgbKey"></param>
        /// <param name="desrgbIV"></param>
        /// <returns></returns>
        public static byte[] DESDecrypt(byte[] data, byte[] desrgbKey, byte[] desrgbIV)
        {
            DESCryptoServiceProvider des = new DESCryptoServiceProvider();
            MemoryStream memoryStream = new MemoryStream();
            CryptoStream cryptoStream = new CryptoStream(memoryStream, des.CreateDecryptor(desrgbKey, desrgbIV), CryptoStreamMode.Write);
            cryptoStream.Write(data, 0, data.Length);
            cryptoStream.FlushFinalBlock();
            return memoryStream.ToArray();
        }
    }
}

标签: unity 工具

实例下载地址

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警