• [DEncrypt] RSACryption--RSA加密/解密字符串 (转载)


    点击下载 RSACryption.zip

    这个类是关于加密,解密的操作,文件的一些高级操作
    1.RSACryption RSA 的密钥产生
    2.RSACryption RSA的加密函数
    3.RSACryption RSA的解密函数
    4.RSACryption 获取Hash描述表 
    5.RSACryption RSA签名 
    6.RSACryption RSA签名认证
    看下面代码吧

    /// <summary>
    /// 类说明:Assistant
    /// 编 码 人:苏飞
    /// 联系方式:361983679  
    /// 更新网站:[url=http://www.cckan.net/thread-655-1-1.html]http://www.cckan.net/thread-655-1-1.html[/url]
    /// </summary>
    using System; 
    using System.Text; 
    using System.Security.Cryptography;
    namespace DotNet.Utilities
    { 
      /// <summary> 
      /// RSA加密解密及RSA签名和验证
      /// </summary> 
      public class RSACryption 
      {     
        public RSACryption() 
        {       
        } 
         
        #region RSA 加密解密 
     
        #region RSA 的密钥产生 
       
        /// <summary>
        /// RSA 的密钥产生 产生私钥 和公钥 
        /// </summary>
        /// <param name="xmlKeys"></param>
        /// <param name="xmlPublicKey"></param>
        public void RSAKey(out string xmlKeys,out string xmlPublicKey) 
        {       
            System.Security.Cryptography.RSACryptoServiceProvider rsa=new RSACryptoServiceProvider(); 
            xmlKeys=rsa.ToXmlString(true); 
            xmlPublicKey = rsa.ToXmlString(false);       
        } 
        #endregion 
     
        #region RSA的加密函数 
        //############################################################################## 
        //RSA 方式加密 
        //说明KEY必须是XML的行式,返回的是字符串 
        //在有一点需要说明!!该加密方式有 长度 限制的!! 
        //############################################################################## 
     
        //RSA的加密函数  string
        public string RSAEncrypt(string xmlPublicKey,string m_strEncryptString ) 
        { 
           
          byte[] PlainTextBArray; 
          byte[] CypherTextBArray; 
          string Result; 
          RSACryptoServiceProvider rsa=new RSACryptoServiceProvider(); 
          rsa.FromXmlString(xmlPublicKey); 
          PlainTextBArray = (new UnicodeEncoding()).GetBytes(m_strEncryptString); 
          CypherTextBArray = rsa.Encrypt(PlainTextBArray, false); 
          Result=Convert.ToBase64String(CypherTextBArray); 
          return Result; 
           
        } 
        //RSA的加密函数 byte[]
        public string RSAEncrypt(string xmlPublicKey,byte[] EncryptString ) 
        { 
           
          byte[] CypherTextBArray; 
          string Result; 
          RSACryptoServiceProvider rsa=new RSACryptoServiceProvider(); 
          rsa.FromXmlString(xmlPublicKey); 
          CypherTextBArray = rsa.Encrypt(EncryptString, false); 
          Result=Convert.ToBase64String(CypherTextBArray); 
          return Result; 
           
        } 
        #endregion 
     
        #region RSA的解密函数 
        //RSA的解密函数  string
        public string RSADecrypt(string xmlPrivateKey, string m_strDecryptString ) 
        {      
          byte[] PlainTextBArray; 
          byte[] DypherTextBArray; 
          string Result; 
          System.Security.Cryptography.RSACryptoServiceProvider rsa=new RSACryptoServiceProvider(); 
          rsa.FromXmlString(xmlPrivateKey); 
          PlainTextBArray =Convert.FromBase64String(m_strDecryptString); 
          DypherTextBArray=rsa.Decrypt(PlainTextBArray, false); 
          Result=(new UnicodeEncoding()).GetString(DypherTextBArray); 
          return Result; 
           
        } 
     
        //RSA的解密函数  byte
        public string RSADecrypt(string xmlPrivateKey, byte[] DecryptString ) 
        {      
          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; 
           
        } 
        #endregion 
     
        #endregion 
     
        #region RSA数字签名 
     
        #region 获取Hash描述表 
        //获取Hash描述表 
        public bool GetHash(string m_strSource, ref byte[] HashData) 
        {       
          //从字符串中取得Hash描述 
          byte[] Buffer; 
          System.Security.Cryptography.HashAlgorithm MD5 = System.Security.Cryptography.HashAlgorithm.Create("MD5"); 
          Buffer = System.Text.Encoding.GetEncoding("GB2312").GetBytes(m_strSource); 
          HashData = MD5.ComputeHash(Buffer); 
     
          return true;       
        } 
     
        //获取Hash描述表 
        public bool GetHash(string m_strSource, ref string strHashData) 
        { 
           
          //从字符串中取得Hash描述 
          byte[] Buffer; 
          byte[] HashData; 
          System.Security.Cryptography.HashAlgorithm MD5 = System.Security.Cryptography.HashAlgorithm.Create("MD5"); 
          Buffer = System.Text.Encoding.GetEncoding("GB2312").GetBytes(m_strSource); 
          HashData = MD5.ComputeHash(Buffer); 
     
          strHashData = Convert.ToBase64String(HashData); 
          return true; 
           
        } 
     
        //获取Hash描述表 
        public bool GetHash(System.IO.FileStream objFile, ref byte[] HashData) 
        { 
           
          //从文件中取得Hash描述 
          System.Security.Cryptography.HashAlgorithm MD5 = System.Security.Cryptography.HashAlgorithm.Create("MD5"); 
          HashData = MD5.ComputeHash(objFile); 
          objFile.Close(); 
     
          return true; 
           
        } 
     
        //获取Hash描述表 
        public bool GetHash(System.IO.FileStream objFile, ref string strHashData) 
        { 
           
          //从文件中取得Hash描述 
          byte[] HashData; 
          System.Security.Cryptography.HashAlgorithm MD5 = System.Security.Cryptography.HashAlgorithm.Create("MD5"); 
          HashData = MD5.ComputeHash(objFile); 
          objFile.Close(); 
     
          strHashData = Convert.ToBase64String(HashData); 
     
          return true; 
           
        } 
        #endregion 
     
        #region RSA签名 
        //RSA签名 
        public bool SignatureFormatter(string p_strKeyPrivate, byte[] HashbyteSignature, ref byte[] EncryptedSignatureData) 
        { 
           
            System.Security.Cryptography.RSACryptoServiceProvider RSA = new System.Security.Cryptography.RSACryptoServiceProvider(); 
     
            RSA.FromXmlString(p_strKeyPrivate); 
            System.Security.Cryptography.RSAPKCS1SignatureFormatter RSAFormatter = new System.Security.Cryptography.RSAPKCS1SignatureFormatter(RSA); 
            //设置签名的算法为MD5 
            RSAFormatter.SetHashAlgorithm("MD5"); 
            //执行签名 
            EncryptedSignatureData = RSAFormatter.CreateSignature(HashbyteSignature); 
     
            return true; 
           
        } 
     
        //RSA签名 
        public bool SignatureFormatter(string p_strKeyPrivate, byte[] HashbyteSignature, ref string m_strEncryptedSignatureData) 
        { 
           
            byte[] EncryptedSignatureData; 
     
            System.Security.Cryptography.RSACryptoServiceProvider RSA = new System.Security.Cryptography.RSACryptoServiceProvider(); 
     
            RSA.FromXmlString(p_strKeyPrivate); 
            System.Security.Cryptography.RSAPKCS1SignatureFormatter RSAFormatter = new System.Security.Cryptography.RSAPKCS1SignatureFormatter(RSA); 
            //设置签名的算法为MD5 
            RSAFormatter.SetHashAlgorithm("MD5"); 
            //执行签名 
            EncryptedSignatureData = RSAFormatter.CreateSignature(HashbyteSignature); 
     
            m_strEncryptedSignatureData = Convert.ToBase64String(EncryptedSignatureData); 
     
            return true; 
           
        } 
     
        //RSA签名 
        public bool SignatureFormatter(string p_strKeyPrivate, string m_strHashbyteSignature, ref byte[] EncryptedSignatureData) 
        { 
           
            byte[] HashbyteSignature; 
     
            HashbyteSignature = Convert.FromBase64String(m_strHashbyteSignature); 
            System.Security.Cryptography.RSACryptoServiceProvider RSA = new System.Security.Cryptography.RSACryptoServiceProvider(); 
     
            RSA.FromXmlString(p_strKeyPrivate); 
            System.Security.Cryptography.RSAPKCS1SignatureFormatter RSAFormatter = new System.Security.Cryptography.RSAPKCS1SignatureFormatter(RSA); 
            //设置签名的算法为MD5 
            RSAFormatter.SetHashAlgorithm("MD5"); 
            //执行签名 
            EncryptedSignatureData = RSAFormatter.CreateSignature(HashbyteSignature); 
     
            return true; 
           
        } 
     
        //RSA签名 
        public bool SignatureFormatter(string p_strKeyPrivate, string m_strHashbyteSignature, ref string m_strEncryptedSignatureData) 
        { 
           
            byte[] HashbyteSignature; 
            byte[] EncryptedSignatureData; 
     
            HashbyteSignature = Convert.FromBase64String(m_strHashbyteSignature); 
            System.Security.Cryptography.RSACryptoServiceProvider RSA = new System.Security.Cryptography.RSACryptoServiceProvider(); 
     
            RSA.FromXmlString(p_strKeyPrivate); 
            System.Security.Cryptography.RSAPKCS1SignatureFormatter RSAFormatter = new System.Security.Cryptography.RSAPKCS1SignatureFormatter(RSA); 
            //设置签名的算法为MD5 
            RSAFormatter.SetHashAlgorithm("MD5"); 
            //执行签名 
            EncryptedSignatureData = RSAFormatter.CreateSignature(HashbyteSignature); 
     
            m_strEncryptedSignatureData = Convert.ToBase64String(EncryptedSignatureData); 
     
            return true; 
           
        } 
        #endregion 
     
        #region RSA 签名验证 
     
        public bool SignatureDeformatter(string p_strKeyPublic, byte[] HashbyteDeformatter, byte[] DeformatterData) 
        { 
           
            System.Security.Cryptography.RSACryptoServiceProvider RSA = new System.Security.Cryptography.RSACryptoServiceProvider(); 
     
            RSA.FromXmlString(p_strKeyPublic); 
            System.Security.Cryptography.RSAPKCS1SignatureDeformatter RSADeformatter = new System.Security.Cryptography.RSAPKCS1SignatureDeformatter(RSA); 
            //指定解密的时候HASH算法为MD5 
            RSADeformatter.SetHashAlgorithm("MD5"); 
     
            if(RSADeformatter.VerifySignature(HashbyteDeformatter,DeformatterData)) 
            { 
              return true; 
            } 
            else
            { 
              return false; 
            } 
           
        } 
     
        public bool SignatureDeformatter(string p_strKeyPublic, string p_strHashbyteDeformatter, byte[] DeformatterData) 
        { 
           
            byte[] HashbyteDeformatter; 
     
            HashbyteDeformatter = Convert.FromBase64String(p_strHashbyteDeformatter); 
     
            System.Security.Cryptography.RSACryptoServiceProvider RSA = new System.Security.Cryptography.RSACryptoServiceProvider(); 
     
            RSA.FromXmlString(p_strKeyPublic); 
            System.Security.Cryptography.RSAPKCS1SignatureDeformatter RSADeformatter = new System.Security.Cryptography.RSAPKCS1SignatureDeformatter(RSA); 
            //指定解密的时候HASH算法为MD5 
            RSADeformatter.SetHashAlgorithm("MD5"); 
     
            if(RSADeformatter.VerifySignature(HashbyteDeformatter,DeformatterData)) 
            { 
              return true; 
            } 
            else
            { 
              return false; 
            } 
           
        } 
     
        public bool SignatureDeformatter(string p_strKeyPublic, byte[] HashbyteDeformatter, string p_strDeformatterData) 
        { 
           
            byte[] DeformatterData; 
     
            System.Security.Cryptography.RSACryptoServiceProvider RSA = new System.Security.Cryptography.RSACryptoServiceProvider(); 
     
            RSA.FromXmlString(p_strKeyPublic); 
            System.Security.Cryptography.RSAPKCS1SignatureDeformatter RSADeformatter = new System.Security.Cryptography.RSAPKCS1SignatureDeformatter(RSA); 
            //指定解密的时候HASH算法为MD5 
            RSADeformatter.SetHashAlgorithm("MD5"); 
     
            DeformatterData =Convert.FromBase64String(p_strDeformatterData); 
     
            if(RSADeformatter.VerifySignature(HashbyteDeformatter,DeformatterData)) 
            { 
              return true; 
            } 
            else
            { 
              return false; 
            } 
           
        } 
     
        public bool SignatureDeformatter(string p_strKeyPublic, string p_strHashbyteDeformatter, string p_strDeformatterData) 
        { 
           
            byte[] DeformatterData; 
            byte[] HashbyteDeformatter; 
     
            HashbyteDeformatter = Convert.FromBase64String(p_strHashbyteDeformatter); 
            System.Security.Cryptography.RSACryptoServiceProvider RSA = new System.Security.Cryptography.RSACryptoServiceProvider(); 
     
            RSA.FromXmlString(p_strKeyPublic); 
            System.Security.Cryptography.RSAPKCS1SignatureDeformatter RSADeformatter = new System.Security.Cryptography.RSAPKCS1SignatureDeformatter(RSA); 
            //指定解密的时候HASH算法为MD5 
            RSADeformatter.SetHashAlgorithm("MD5"); 
     
            DeformatterData =Convert.FromBase64String(p_strDeformatterData); 
     
            if(RSADeformatter.VerifySignature(HashbyteDeformatter,DeformatterData)) 
            { 
              return true; 
            } 
            else
            { 
              return false; 
            } 
           
        } 
     
     
        #endregion 
     
     
        #endregion 
     
      } 
    }
  • 相关阅读:
    POJ 3259 Wormholes【BellmanFord】
    POJ 2960 SNim【SG函数的应用】
    ZOJ 3578 Matrixdp水题
    HDU 2897 邂逅明下【bash博弈】
    BellmanFord 算法及其优化【转】
    【转】几个Java的网络爬虫
    thinkphp 反字符 去标签 自动加点 去换行 截取字符串 冰糖
    php 二维数组转 json文本 (jquery datagrid 数据格式) 冰糖
    PHP 汉字转拼音(首拼音,所有拼音) 冰糖
    设为首页与加入收藏 兼容firefox 冰糖
  • 原文地址:https://www.cnblogs.com/lizeyan/p/3628535.html
Copyright © 2020-2023  润新知