1. #region 图片加密
  2. /// <summary>
  3. /// 加密本地文件
  4. /// </summary>
  5. /// <param name="inputname">读取文件的路径</param>
  6. /// <param name="outname">要输出的文件路径</param>
  7. /// <param name="key">密钥</param>
  8. /// <returns></returns>
  9. public bool EncrptFile(string inputname, string outname, string key = "R4yqHaM%")
  10. {
  11. //通过des加密
  12. DESCryptoServiceProvider des = new DESCryptoServiceProvider();
  13. //通过流打开文件
  14. FileStream fs = System.IO.File.OpenRead(inputname);
  15. //获取文件二进制字符
  16. byte[] inputByteArray = new byte[fs.Length];
  17. //读流文件
  18. fs.Read(inputByteArray, 0, (int)fs.Length);
  19. //关闭流
  20. fs.Close();
  21. //获得加密字符串二进制字符
  22. byte[] keyByteArray = Encoding.Default.GetBytes(key);
  23. //计算指定字节组指定区域哈希值
  24. SHA1 ha = new SHA1Managed();
  25. byte[] hb = ha.ComputeHash(keyByteArray);
  26. //加密密钥数组
  27. byte[] sKey = new byte[8];
  28. //加密变量
  29. byte[] sIV = new byte[8];
  30. for (int i = 0; i < 8; i++)
  31. sKey[i] = hb[i];
  32. for (int i = 8; i < 16; i++)
  33. sIV[i - 8] = hb[i];
  34. //获取加密密钥
  35. des.Key = sKey;
  36. //设置加密初始化向量
  37. des.IV = sIV;
  38. MemoryStream ms = new MemoryStream();
  39. CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write);
  40. cs.Write(inputByteArray, 0, inputByteArray.Length);
  41. cs.FlushFinalBlock();
  42. fs = System.IO.File.OpenWrite(outname);
  43. foreach (byte b in ms.ToArray())
  44. {
  45. fs.WriteByte(b);
  46. }
  47. fs.Close();
  48. cs.Close();
  49. ms.Close();
  50. return true;
  51. }
  52. #endregion
  53. #region 图片解密
  54. /// <summary>
  55. /// 解密图片 返回一个base64
  56. /// </summary>
  57. /// <param name="filename"></param>
  58. /// <param name="key"></param>
  59. /// <returns></returns>
  60. public string ReadEnImage(string filename, string key = "R4yqHaM%")
  61. {
  62. //通过des解密
  63. DESCryptoServiceProvider des = new DESCryptoServiceProvider();
  64. //通过流读取文件
  65. FileStream fs = File.OpenRead(this.FilePath.Text);
  66. //获取文件二进制字符
  67. byte[] inputByteArray = new byte[fs.Length];
  68. //读取流文件
  69. fs.Read(inputByteArray, 0, (int)fs.Length);
  70. //关闭流
  71. fs.Close();
  72. //密钥数组
  73. byte[] keyByteArray = Encoding.Default.GetBytes("R4yqHaM%");
  74. //定义哈希变量
  75. SHA1 ha = new SHA1Managed();
  76. //计算指定字节组指定区域哈希值
  77. byte[] hb = ha.ComputeHash(keyByteArray);
  78. //加密密钥数组
  79. byte[] sKey = new byte[8];
  80. //加密变量
  81. byte[] sIV = new byte[8];
  82. for (int i = 0; i < 8; i++)
  83. sKey[i] = hb[i];
  84. for (int i = 8; i < 16; i++)
  85. sIV[i - 8] = hb[i];
  86. //获取加密密钥
  87. des.Key = sKey;
  88. //加密变量
  89. des.IV = sIV;
  90. MemoryStream ms = new MemoryStream();
  91. CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write);
  92. cs.Write(inputByteArray, 0, inputByteArray.Length);
  93. cs.FlushFinalBlock();
  94. byte[] by = ms.ToArray();
  95. string base64 = Convert.ToBase64String(by);
  96. fs.Close();
  97. cs.Close();
  98. ms.Close();
  99. return "data:image/png;base64," + base64;
  100. }
  101. #endregion

说明:加密代码为将图片加密后存储了一份,如果需要删除加密前的图片  自行修改代码

解密部分为  在解密后返回的不是一个图片  而是一个base64   这是我在web开发项目中遇到的问题所要求的。希望能帮助你,谢谢支持!

.NET 图片解密为BASE64的更多相关文章

  1. Java对网络图片/本地图片转换成Base64编码和解码

    一.将本地图片转换成Base64编码字符串 /** * 将本地图片转换成Base64编码字符串 * * @param imgFile 图片目录路径 * @return */ public static ...

  2. ASP图片格式与base64数据互转方法

    ASP图片格式与base64数据相互转换的方法,经常用于处理表单中存储有base64字符串格式的图片. 获取到base64数据,转换成图片 <% Subfolder=year(now)& ...

  3. 图片转换成Base64编码集成到html文件

    首先为什么要这么做?  原因很简单这样可以减少与服务器的请求,当然对于一些浏览器并不支持,如IE8.通常用在手机版网站中,具体转化方法如下: 1.在线打开Base64的编码器将图片编码成Base64 ...

  4. [前端性能提升]--图片转化为base64

    图片的 base64 编码就是可以将一副图片数据编码成一串字符串,使用该字符串代替图像地址 意义:网页上的每一个图片,都是需要消耗一个 http 请求下载而来的(所有才有了 csssprites 技术 ...

  5. 图片处理之 Base64

    网页上的图片资源如果采用 http 形式的 url 的话都会额外发送一次请求,网页发送的 http 请求次数越多,会造成页面加载速度越慢.而采用Base64格式的编码,将图片转化为字符串后,图片文件会 ...

  6. Base64字符保存图片,图片转换成Base64字符编码

    //文件转换成Base64编码 public static String getFileBase64Str(String filePath) throws IOException { String f ...

  7. java 图片转换成base64字符串

    import java.io.ByteArrayOutputStream; import java.io.FileInputStream;import java.io.FileOutputStream ...

  8. JS将图片转换成Base64码

    直接上代码 html页面代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset= ...

  9. EF+LINQ事物处理 C# 使用NLog记录日志入门操作 ASP.NET MVC多语言 仿微软网站效果(转) 详解C#特性和反射(一) c# API接受图片文件以Base64格式上传图片 .NET读取json数据并绑定到对象

    EF+LINQ事物处理   在使用EF的情况下,怎么进行事务的处理,来减少数据操作时的失误,比如重复插入数据等等这些问题,这都是经常会遇到的一些问题 但是如果是我有多个站点,然后存在同类型的角色去操作 ...

随机推荐

  1. c# 获取本周开始时间与结束时间

    public static DateTime WeekStartTime { get { DateTime dt = DateTime.Now; * ();//取本周一 ) //如果今天是周日,则开始 ...

  2. [ASPX] 模版引擎XTemplate与代码生成器XCoder(源码)

    模版引擎XTemplate是一个仿T4设计的引擎,功能上基本与T4一致(模版语法上完全兼容T4,模版头指令部分兼容). 自己设计模版引擎,就是为了代码生成器.网站模版.邮件模版等多种场合,也就是要能拿 ...

  3. JDBC基础01

    今日知识 1. JDBC基本概念2. 快速入门3. 对JDBC中各个接口和类详解 JDBC: 1. 概念:Java DataBase Connectivity Java 数据库连接, Java语言操作 ...

  4. java的重载总结

    1.不能以返回值的不同来重载方法,编译都不通过(只有参数类型或者参数个数不同才可以重载方法) 在Java语言中,要重载一个方法,除了要与原方法具有相同的简单名称外,还要求必须拥有一个与原方法不同的(不 ...

  5. React 16 服务端渲染的新特性

    React 16 服务端渲染的新特性 React 16 中关于服务端渲染的新特性 快速介绍React 16 服务端渲染的新特性,包括数组.性能.流等 React 16 终于来了!

  6. LyX初步

    最近写毕业论文少量入手了LyX. 这个工具是两三年前在CTeX群里听说的.当时感觉太高大上,连Linux下用LaTeX都还没搞定,于是没想这个. 但是最近用了LaTeX模板感觉太麻烦,于是试着装了一下 ...

  7. Java单例模式 多种实现方式

    一:通过静态私有成员实现单例模式 (1):私有化构造函数 (2):new静态实例属性对象,加锁. 单例类: package SinglePag; /* * 构造函数私有化,结合锁+静态的概念 实现单例 ...

  8. 高德地图开发之获取SHA1码

    通过Android Studio获取SHA1 第一步.打开 Android Studio 的 Terminal 工具. 第二步.输入命令:keytool -v -list -keystore  key ...

  9. MemCached总结二:数据管理指令

    管理memcached中的数据包括添加(add).修改(set).删除(delete)及获取(get)等操作. 命令格式: 1.set set userId 0 0 5 12345 STORED ge ...

  10. Linux VFS分析(二)

    inode的管理:Inode-cache hash表inode_hashtable索引节点缓存 dentry的管理: 我们知道,若干dentry描绘了一个树型的目录结构,这就是用户所看到的目录结构,每 ...