1. /// <summary>
  2. /// ikmb@163.com
  3. /// </summary>
  4. public class MyRAS
  5. {
  6. /// <summary>
  7. /// RAS加密
  8. /// </summary>
  9. /// <param name="xmlPublicKey">公钥</param>
  10. /// <param name="EncryptString">明文</param>
  11. /// <returns>密文</returns>
  12.  
  13. public static string RSAEncrypt(string xmlPublicKey, string EncryptString)
  14. {
  15. byte[] PlainTextBArray;
  16. byte[] CypherTextBArray;
  17. string Result=String.Empty;
  18. System.Security.Cryptography.RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
  19. rsa.FromXmlString(xmlPublicKey);
  20. int t = (int)(Math.Ceiling((double)EncryptString.Length / (double)));
  21. //分割明文
  22. for (int i = ; i <= t-; i++)
  23. {
  24.  
  25. PlainTextBArray = (new UnicodeEncoding()).GetBytes(EncryptString.Substring(i * , EncryptString.Length - (i * ) > ? : EncryptString.Length - (i * )));
  26. CypherTextBArray = rsa.Encrypt(PlainTextBArray, false);
  27. Result += Convert.ToBase64String(CypherTextBArray) + "ThisIsSplit";
  28. }
  29. return Result;
  30. }
  31. /// <summary>
  32. /// RAS解密
  33. /// </summary>
  34. /// <param name="xmlPrivateKey">私钥</param>
  35. /// <param name="DecryptString">密文</param>
  36. /// <returns>明文</returns>
  37. public static string RSADecrypt(string xmlPrivateKey, string DecryptString)
  38. {
  39. byte[] PlainTextBArray;
  40. byte[] DypherTextBArray;
  41. string Result=String.Empty;
  42. System.Security.Cryptography.RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
  43. rsa.FromXmlString(xmlPrivateKey);
  44. string[] Split = new string[];
  45. Split[] = "ThisIsSplit";
  46. //分割密文
  47. string[] mis = DecryptString.Split(Split, StringSplitOptions.RemoveEmptyEntries);
  48. for (int i = ; i < mis.Length; i++)
  49. {
  50. PlainTextBArray = Convert.FromBase64String(mis[i]);
  51. DypherTextBArray = rsa.Decrypt(PlainTextBArray, false);
  52. Result += (new UnicodeEncoding()).GetString(DypherTextBArray);
  53. }
  54. return Result;
  55. }
  56.  
  57. /// <summary>
  58. /// 产生公钥和私钥对
  59. /// </summary>
  60. /// <returns>string[] 0:私钥;1:公钥</returns>
  61. public static string[] RSAKey()
  62. {
  63. string[] keys = new string[];
  64. System.Security.Cryptography.RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
  65. keys[] = rsa.ToXmlString(true);
  66. keys[] = rsa.ToXmlString(false);
  67. return keys;
  68. }
  69. }

C# RAS 非对称加密类 支持长字符串的更多相关文章

  1. RAS非对称加密

    加解密密钥不一致,一般私钥不公开,使用公钥加密,私钥解密,使用私钥加密,公钥可以解密. java代码 import javax.crypto.Cipher; import java.security. ...

  2. RAS非对称加密与数字证书数字签名

    它用图片通俗易懂地解释了,"数字签名"(digital signature)和"数字证书"(digital certificate)到底是什么. 我对这些问题的 ...

  3. eclipse处理长字符串拼接快捷方法类

    情景: 你在后台写sql文访问数据库时是不是要这样写 String sql="select a," +"b," +"c " +"f ...

  4. Asp.Net 常用工具类之加密——非对称加密RSA算法

    踏入程序员这个行业也有几年了,几年中有收获(技术加强),有付出(时间和亚健康状态).当然喏,并不后悔,代码路还长!!! On The Way,永不止步!!! 开发过程中也积累了一些自己的经验.代码块和 ...

  5. php RAS加密类代码

    通过openssl实现的签名.验签.非对称加解密,需要配合x.509证书(如crt和pem)文件使用. <?php /** * RSA算法类 * 签名及密文编码:base64字符串/十六进制字符 ...

  6. Java & PHP & Javascript 通用 RSA 加密 解密 (长字符串)

    系统与系统的数据交互中,有些敏感数据是不能直接明文传输的,所以在发送数据之前要进行加密,在接收到数据时进行解密处理:然而由于系统与系统之间的开发语言不同. 本次需求是生成二维码是通过java生成,由p ...

  7. RSA 加密 解密 (长字符串) JAVA JS版本加解密

    系统与系统的数据交互中,有些敏感数据是不能直接明文传输的,所以在发送数据之前要进行加密,在接收到数据时进行解密处理:然而由于系统与系统之间的开发语言不同. 本次需求是生成二维码是通过java生成,由p ...

  8. MD5工具类,提供字符串MD5加密、文件MD5值获取(校验)功能

    MD5工具类,提供字符串MD5加密(校验).文件MD5值获取(校验)功能 : package com.yzu.utils; import java.io.File; import java.io.Fi ...

  9. 加密webconfig中的连接字符串,利用RSA非对称加密,利用windows保存密钥容器

    简单的解决方法: WebConfig 加解密,未能使用提供程序“RsaProtectedConfigurationProvider”进行解密.提供程序返回错误消息为: 打不开 RSA 密钥容器.问题: ...

随机推荐

  1. java 钱币的单位转换

    将钱转成转换为带指定单位的钱 int money = 10; NumberFormat nf = NumberFormat.getCurrencyInstance(Locale.US); System ...

  2. Android开发----权限大全

    一.添加权限格式:     示例:      <uses-permission android:name="android.permission.WRITE_EXTERNAL_STOR ...

  3. 移动触摸事件(touchstart、touchmove和touchend)

    touchstart事件:当手指触摸屏幕时候触发,即使已经有一个手指放在屏幕上也会触发. touchmove事件:当手指在屏幕上滑动的时候连续地触发.在这个事件发生期间,调用preventDefaul ...

  4. git 教程 git.oschina.net

    官方说明:http://git.oschina.net/oschina/git-osc/wikis/%E5%B8%AE%E5%8A%A9#ssh-keys 安装完成后,在开始菜单里找到"Gi ...

  5. C++中new的用法

    new int;//开辟一个存放整数的存储空间,返回一个指向该存储空间的地址(即指针) new int(100);//开辟一个存放整数的空间,并指定该整数的初值为100,返回一个指向该存储空间的地址 ...

  6. SGU 249.Matrix(Gray码)

    题意: 用0到2^(n+m-1)这2^(n+m-1)个数填在一个2^n*2^m的矩阵里,使得所有相邻的数的二进制表示只有一位不同. Solution: Gray码.对于第i行第j列的数,由i的Gray ...

  7. css3基础教程十六变形与动画animation

    前面我们讲过的变形与动画一般都是通过鼠标的单击.获得焦点,被点击或对元素进行一定改变后以后触发效果的,那么有没有像Flash一样自动播放的动画效果呢?答案当然是肯定的,这就是我们今天要讲到的anima ...

  8. VB.NET中LINQ TO List泛型查询语句(分组,聚合函数)

    Public Class LinqToList 'LINQ在C#中使用比较方便,但是在VB中使用比较麻烦,复杂,和C#用法并不太一样 Dim listNew As List(Of Product) = ...

  9. spring mvc easyui tree 异步加载树

    使用spring mvc 注解 异步加载一棵树 jsp: <ul id="orgInfoTree"></ul> $(function(){ loadOrgT ...

  10. Day8 面向对象(补充)

    私有字段 class Foo: def __init__(self, name): self.__name = name def f1(self): print(self.__name) class ...