苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 37657|回复: 9
打印 上一主题 下一主题

[DEncrypt] RSACryption--RSA加密/解密字符串

[复制链接]
跳转到指定楼层
楼主
发表于 2012-12-10 22:56:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
                   RSACryption--RSA加密/解密字符串
导读部分
-------------------------------------------------------------------------------------------------------------
C#基类库苏飞版--系列教程导航 http://www.sufeinet.com/thread-655-1-1.html

下载之前你首先要注册成为会员哦,注册之后就可以直接下载啦
更新时间:2012-12-10
最新的RSACryption类下载:
RSACryption.zip (1.75 KB, 下载次数: 468)
这个类是关于加密,解密的操作,文件的一些高级操作
1.RSACryption RSA 的密钥产生
2.RSACryption RSA的加密函数
3.RSACryption RSA的解密函数
4.RSACryption 获取Hash描述表
5.RSACryption RSA签名
6.RSACryption RSA签名认证
看下面代码吧
[C#] 纯文本查看 复制代码
/// <summary>
/// 类说明:Assistant
/// 编 码 人:苏飞
/// 联系方式:361983679  
/// 更新网站:[url=http://www.sufeinet.com/thread-655-1-1.html]http://www.sufeinet.com/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 

  } 
} 



1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
沙发
发表于 2013-5-23 14:44:38 | 只看该作者
不错,正好需要用到这个。
板凳
发表于 2014-9-26 13:33:16 | 只看该作者
强烈支持楼主ing……
地板
发表于 2014-9-26 14:04:38 | 只看该作者
我只是路过打酱油的。
5
发表于 2015-12-10 16:37:51 | 只看该作者
楼主加油,我们都看好你哦。
6
发表于 2016-6-9 21:29:32 | 只看该作者
网站上给定了公钥,怎么把这个公钥转成xml格式
[JavaScript] 纯文本查看 复制代码
var publicKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCCw93f4CsVKbmfNNISrIMC5W9LK6o7dd/St3ehLBT0Ukct/1GvEgXRQMUM1Pjvj++/JzVE68dVzNV4GopdBRCmz3FQAib0fBYkmoHGghKKuJhTNwrqKMXXwi0gnEd1CuspQUK7YaNQHfae72dvuTBgnyA3H7mUdOajctCJGO9OawIDAQAB";
var txtpayapssword = $.trim($("#payPassword").val());
var encrypt = new JSEncrypt();
encrypt.setPublicKey(publicKey);
$("#payPassword").val(encrypt.encrypt(txtpayapssword));
7
 楼主| 发表于 2016-6-11 18:29:40 | 只看该作者
www248750521 发表于 2016-6-9 21:29
网站上给定了公钥,怎么把这个公钥转成xml格式
[mw_shl_code=javascript,true]var publicKey = "MIGfMA0GC ...

这个自己写个读Xml格式的程序完成
8
发表于 2019-12-12 11:40:18 | 只看该作者
这个很不错,收下了!!!!!!!!!!
9
发表于 2020-2-5 14:46:14 | 只看该作者
谢谢
回复

使用道具 举报

10
发表于 2020-2-12 21:54:39 | 只看该作者
我只是路过打酱油的。
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备18043678号-2)

GMT+8, 2025-3-14 01:09

© 2014-2021

快速回复 返回顶部 返回列表