.NET 图片解密为BASE64

  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开发项目中遇到的问题所要求的。希望能帮助你,谢谢支持!

原文地址:https://www.cnblogs.com/cnhonker/p/9002276.html

时间: 2024-08-30 17:42:04

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

造轮子:C#中将图片转化成base64字符串

厂址:http://www.cnblogs.com/yunfeifei/p/4165351.html 1.在C#中将图片转化成base64字符串: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; namespace ConvertImgToBase64 { class Program { static void Main(string[]

js绝对地址图片转换成base64的方法

//将图片转换成base64 function getBase64Image(url, callback){ var canvas = document.createElement('canvas'), ctx = canvas.getContext('2d'), img = new Image(); //为了解决跨域,可以直接img.crossOrigin=''就能解决图片跨域问题 img.crossOrigin = 'xes'; img.onload = function(){ canvas

DES对称加解密、AES RijndaelManaged加解密、Base64加密解密、MD5加密等操作辅助类 EncodeHelper

/// <summary> /// 使用默认加密 /// </summary> /// <param name="strText"></param> /// <returns></returns> public static string DesEncrypt(string strText) /// <summary> /// 使用默认解密 /// </summary> /// <pa

Android文字图片写入CSV(Base64)并分享

做的一个分享的功能,将文字图片以CSV的形式分享到邮件之类的应用. 首先,CSV逗号分隔值文件格式(Comma-Separated Values),纯文本形式,逗号分隔,一行数据不跨行. 图片转换成Base64字符串 public String writeBase64(String path) { //path图片路径 byte[] data = null; try { InputStream in = new FileInputStream(path); data = new byte[in.

按比例压缩图片和图片转换成BASE64

通常会需要将突破转换为字符串的操作,贴此详例,仅供参考和积累 #region 按比例压缩图片和图片转换成BASE64 /// <summary> /// 按照比例缩小图片 /// </summary> /// <param name="srcImage">要缩小的图片</param> /// <param name="percent">缩小比例</param> /// <returns&g

html5将图片转换成base64的实例代码

这篇文章给大家介绍了如何利用html5将图片转换成base64,文中通过示例代码介绍的很详细,有需要的朋友们可以参考借鉴. base64编码介绍base64是一种网络上常用的8bit字节代码的编码方式,base64可以用于http环境下传递较长的标识信息,同时可以放在url当中使用,因为base64不惧可读性,所以具有一定的加密功能. 为什么要把图片转换成base64编码?将图片转换成base64代码可以减少http请求,因为图片可以以字符编码的形式直接传递到客户端,而文件形式都需要进行http

图片处理之 Base64

网页上的图片资源如果采用 http 形式的 url 的话都会额外发送一次请求,网页发送的 http 请求次数越多,会造成页面加载速度越慢.而采用Base64格式的编码,将图片转化为字符串后,图片文件会随着 html 元素一并加载,这样就可以减少 http 请求的次数,对于网页优化是一种比较好的手段. 当我们将一个只有几KB的图片转化为Base64格式编码,根据 Base64 的编码原理,大小比原文件大小大 1/3.如果将其写在一个 CSS 文件中,这样一个 CSS 文件的大小会剧增,造成代码可读

怎么才能将文件流或者图片转化为base64,传到前台展示

图片转化为base64,传到前台展示 public String getBase64(){ String imgStr = ""; try { File file = new File("C:\\EThinkTankFile\\20180402160120431.jpg"); FileInputStream fis = new FileInputStream(file); byte[] buffer = new byte[(int) file.length()];

将图片转化为base64编码字符串

pom依赖 <dependency> <groupId>org.ops4j.base</groupId> <artifactId>ops4j-base-net</artifactId> <version>1.5.0</version> </dependency> import org.ops4j.net.Base64Encoder; /** * 根据图片地址转换为base64编码字符串 * @param img