C#使用RSA加密解密文件

本文实例为大家分享了C#使用RSA加密解密文件的具体代码,供大家参考,具体内容如下

加密代码:

//加密代码,注意会覆盖原文件,里面有我的公钥,你要用时记得覆盖我的公钥
 private bool  encryptFile(string filename)
    {
      FileStream f;
      try
      {
        f = new FileStream(filename, FileMode.Open, FileAccess.ReadWrite, FileShare.Read);
      }
      catch
      {
        return false;
      }
      Random r = new Random();
      Thread.Sleep(10*r.Next(3,8));
      RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(1024);
      rsa.FromXmlString("<RSAKeyValue><Modulus>w7nNT8U7kwTw8UqLk0lROxmfTRZnQrMH1QrNyUGtoeAJ3w+iH08j+h83cPWxwPoxpXm1cgCLFWtCFWY1rkQDCCLxJhUIwYTbGKTg9h0uUVfNxGiNji7dcHShd01UYpZjHCwOar1wjJD4vJqVJCk++59UUMhE9IUATuSUVpRy1bE=</Modulus><Exponent>AQAB</Exponent></RSAKeyValue>");
      //导入密钥
      byte[] data = new byte[16];
      ArrayList con = new ArrayList();
      while(f.Read(data, 0, 16)!=0)
      {

        byte[] result = rsa.Encrypt(data,false);
        //Thread.Sleep(10 * r.Next(2, 7));
        con.Add(result);
      }
      //加密
      f.Seek(0, SeekOrigin.Begin);
      foreach(byte[] d in con)
      {
        f.Write(d, 0, d.Length);
      }

      f.Close();
      return true;
}

解密代码:

//解密代码,覆盖原文件,返回值表示是否解密成功
 private bool decryptFile(string filename,string key)
    {
      FileStream f;
      try
      {
        f = new FileStream(filename, FileMode.Open, FileAccess.ReadWrite, FileShare.Read);
      }
      catch
      {
        return false;
      }
      RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(1024);
      try
      {
        rsa.FromXmlString(key);
      }
      catch
      {
        return false;
      }

      byte[] data = new byte[128];
      ArrayList con = new ArrayList();
      while (f.Read(data, 0, 128) != 0)
      {
        byte[] result;
        try
        {
          result = rsa.Decrypt(data, false);
        }
        catch
        {
          return false;
        }
        con.Add(result);
      }
      //解密
      f.SetLength(con.Count * 16);
      f.Seek(0, SeekOrigin.Begin);
      foreach (byte[] d in con)
      {
        f.Write(d, 0, d.Length);
      }
      f.Close();
      return true;
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

时间: 2019-03-26

C#RSA对接JAVA中RSA方式代码实例

C#中通过FromXmlString属性加载的是XML形式,而JAVA中用到的是解析后的PEM格式的字符串,总之读取证书中信息无非是转换方式问题 /// <summary> /// c# 使用 java 的公钥进行rsa加密 utf8编码 通过解析公钥加密数据 /// </summary> /// <param name="publickey"></param> /// <returns></returns> pu

C#中RSA加密与解密的实例详解

1.  RSA加密与解密  --  使用公钥加密.私钥解密 public class RSATool { public string Encrypt(string strText, string strPublicKey) { RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(); rsa.FromXmlString(strPublicKey); byte[] byteText = Encoding.UTF8.GetBytes

同时兼容JS和C#的RSA加密解密算法详解(对web提交的数据加密传输)

前言 我们在Web应用中往往涉及到敏感的数据,由于HTTP协议以明文的形式与服务器进行交互,因此可以通过截获请求的数据包进行分析来盗取有用的信息.虽然https可以对传输的数据进行加密,但是必须要申请证书(一般都是收费的),成本较高.那么问题来了,如果对web提交的敏感数据进行加密呢?web应用中,前端的数据处理和交互基本上都是靠javascript来完成,后台的逻辑处理可以C#(java)等进行处理. 微软的C#中虽然有RSA算法,但是格式和OpenSSL生成的公钥/私钥文件格式并不兼容.这个

C#实现简单的RSA非对称加密算法示例

本文实例讲述了C#实现简单的RSA非对称加密算法.分享给大家供大家参考,具体如下: 界面控件 namespace RSA算法 { partial class Form1 { /// <summary> /// 必需的设计器变量. /// </summary> private System.ComponentModel.IContainer components = null; /// <summary> /// 清理所有正在使用的资源. /// </summary

jQuery+C#实现参数RSA加密传输功能【附jsencrypt.js下载】

本文实例讲述了jQuery+C#实现参数RSA加密传输功能.分享给大家供大家参考,具体如下: 注意: 参数传递的+号处理,在传输时会把+变成空格,不处理后端就报错了. 1.前端代码 <!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width" /> <title>Login</title> <

Js参数RSA加密传输之jsencrypt.js的使用

注意几点: 1.参数传递的+号处理,在传输时会把+变成空格,不处理后端就报错了. 1.前端代码 <!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width" /> <title>Login</title> <script src="~/Scripts/jquery-1.10.2.m

jQuery+Ajax+PHP实现“喜欢”评级功能附源码下载

本文章来给大家介绍一个jQuery+Ajax+PHP实现"喜欢"评级功能代码,用户点击页面中自己喜欢的图片上的红心按钮时,前端页面向后台发送一个ajax请求,后台PHP程序接收请求后,查询IP库中是否已经有该用户的点击记录,如果没有,则将对应的数值+1,同时将该用户IP信息写入IP库,反之则告诉用户已经"喜欢过了".  源码下载地址:http://xiazai.jb51.net/201509/yuanma/loveit(jb51.net).rar 实现过程 本文基于

jQuery实现产品对比功能附源码下载

产品对比相信大家并不陌生,为了方便用户对类似产品的相关信息进行有效直观的对比,一些电商网站产品或评测网站会为用户提供产品对比的功能,用户只需勾选多个需要对比的产品,就可以进行比对.本文将使用jQuery来给大家讲解如何实现产品对比功能. 查看演示     下载源码 HTML HTML结构我们分三部分,第一是产品列表部分,展示所有可以对比的产品.我们以某手机网站为例,简单的结构,只需展示产品图片和名称,以及一个添加按钮.注意我们把手机的相关参数信息都放在属性data-*里,等会后面展示对比信息的时

jQuery实现对无序列表的排序功能(附demo源码下载)

本文实例讲述了jQuery实现对无序列表的排序功能.分享给大家供大家参考,具体如下: 利用jQuery对无序列表排序的原理是:获取到无序列表中的所有列表项,并转成数组形式,使用JavaScript函数对其进行排序后再次输出.其中使用到的jQuery函数有ready().get().text().each().append()和JavaScript函数sort(). 1.jQuery函数介绍 (1)jQuery函数get()--获取匹配元素集合 该函数取得所有匹配元素的一种向后兼容的方式(不同于j

基于Jquery制作图片文字排版预览效果附源码下载

基于jQuery图文排版图片预览特效.这是一款基于jQuery+CSS3实现的鼠标点击图片弹出画廊切换特效. 效果图如下所示,怎么样感兴趣吗,感兴趣的朋友继续往下学习哦. 效果演示    源码下载 html代码: <div id="fullscreen"> <div id="fullscreen-inner"> <div id="fullscreen-inner-left" class="fullscree

基于Jquery实现仿百度百科右侧导航代码附源码下载

先给大家展示下效果图,看看是不是亲想要实现的效果,如果还满意的话请查看本文详情,同时大家也可以下载源码哦. 效果图: 效果展示  源码下载 代码说明: 仿百度百科右侧导航代码jquery插件,这个仿百科右侧导航js代码,在很久以前就像搞个用了,因为这个导航特别适合长篇文档使用,花了半天时间写了这个仿百科导航插件,不过和百度百科比起来还是有点弱,没有实现右侧导航区域滚动的功能,如果您的文档不是超级变态长,应该够用. 如果你的导航超级长,可能要用到侧边导航页可以滚动,一般情况下还是用不到,等过些时候

jQuery使用eraser.js插件实现擦除、刮刮卡效果的方法【附eraser.js下载】

本文实例讲述了jQuery使用eraser.js插件实现擦除.刮刮卡效果的方法.分享给大家供大家参考,具体如下: jquery.eraser是一款使用鼠标或触摸的动作来擦除画布显示真正图片的插件.jquery.eraser插件的原理是用一个画布遮住图片,然后根据触摸或鼠标输入来擦除画布显示图片,您可以在参数中指定一个回调函数设置画笔大小. 使用需知: 必须确保图片是完全加载之后调用eraser(),否则它不会工作.插件正常运行在Safari,Chrome OS X和Windows,Android

jQuery Timelinr实现垂直水平时间轴插件(附源码下载)

jquery.timelinr.js是一款效果非常炫酷的jQuery时间轴插件.jquery.timelinr可以制作水平和垂直时间轴效果,并且可以进行自动播放.你可以通过参数来控制每次时间轴切换的动画效果. 推荐阅读:之前分享过一款 jQuery实现企业发展简史时间轴特效源码 ,它的界面展示效果很不错. 效果展示       源码下载 使用方法 使用该时间轴插件需要在页面中引入jQuery和jquery.timelinr.js文件. <script src="js/jquery-1.x.

基于jQuery实现select下拉选择可输入附源码下载

我们知道,一般select下拉框是只能选择的,不能用来输入内容的.而有时我们会遇到下拉框中没有要选择的信息项或者下拉选项特别多时,我们可以让select变成text,允许用户输入想要的内容,同时还可以在输入的时候将包含关键字的项也列出来,供快速选择. 查看演示效果           源码下载 本文将用实例和大家分享一款基于jQuery的下拉框插件,它允许用户输入内容,同时下拉选项中会及时匹配相关选项,支持键盘操作,还支持html选项内容,当然还能让下拉的过程带有动画效果.我们来看下如何使用.