.NET 图片解密为BASE64
- #region 图片加密
- /// <summary>
- /// 加密本地文件
- /// </summary>
- /// <param name="inputname">读取文件的路径</param>
- /// <param name="outname">要输出的文件路径</param>
- /// <param name="key">密钥</param>
- /// <returns></returns>
- public bool EncrptFile(string inputname, string outname, string key = "R4yqHaM%")
- {
- //通过des加密
- DESCryptoServiceProvider des = new DESCryptoServiceProvider();
- //通过流打开文件
- FileStream fs = System.IO.File.OpenRead(inputname);
- //获取文件二进制字符
- byte[] inputByteArray = new byte[fs.Length];
- //读流文件
- fs.Read(inputByteArray, 0, (int)fs.Length);
- //关闭流
- fs.Close();
- //获得加密字符串二进制字符
- byte[] keyByteArray = Encoding.Default.GetBytes(key);
- //计算指定字节组指定区域哈希值
- SHA1 ha = new SHA1Managed();
- byte[] hb = ha.ComputeHash(keyByteArray);
- //加密密钥数组
- byte[] sKey = new byte[8];
- //加密变量
- byte[] sIV = new byte[8];
- for (int i = 0; i < 8; i++)
- sKey[i] = hb[i];
- for (int i = 8; i < 16; i++)
- sIV[i - 8] = hb[i];
- //获取加密密钥
- des.Key = sKey;
- //设置加密初始化向量
- des.IV = sIV;
- MemoryStream ms = new MemoryStream();
- CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write);
- cs.Write(inputByteArray, 0, inputByteArray.Length);
- cs.FlushFinalBlock();
- fs = System.IO.File.OpenWrite(outname);
- foreach (byte b in ms.ToArray())
- {
- fs.WriteByte(b);
- }
- fs.Close();
- cs.Close();
- ms.Close();
- return true;
- }
- #endregion
- #region 图片解密
- /// <summary>
- /// 解密图片 返回一个base64
- /// </summary>
- /// <param name="filename"></param>
- /// <param name="key"></param>
- /// <returns></returns>
- public string ReadEnImage(string filename, string key = "R4yqHaM%")
- {
- //通过des解密
- DESCryptoServiceProvider des = new DESCryptoServiceProvider();
- //通过流读取文件
- FileStream fs = File.OpenRead(this.FilePath.Text);
- //获取文件二进制字符
- byte[] inputByteArray = new byte[fs.Length];
- //读取流文件
- fs.Read(inputByteArray, 0, (int)fs.Length);
- //关闭流
- fs.Close();
- //密钥数组
- byte[] keyByteArray = Encoding.Default.GetBytes("R4yqHaM%");
- //定义哈希变量
- SHA1 ha = new SHA1Managed();
- //计算指定字节组指定区域哈希值
- byte[] hb = ha.ComputeHash(keyByteArray);
- //加密密钥数组
- byte[] sKey = new byte[8];
- //加密变量
- byte[] sIV = new byte[8];
- for (int i = 0; i < 8; i++)
- sKey[i] = hb[i];
- for (int i = 8; i < 16; i++)
- sIV[i - 8] = hb[i];
- //获取加密密钥
- des.Key = sKey;
- //加密变量
- des.IV = sIV;
- MemoryStream ms = new MemoryStream();
- CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write);
- cs.Write(inputByteArray, 0, inputByteArray.Length);
- cs.FlushFinalBlock();
- byte[] by = ms.ToArray();
- string base64 = Convert.ToBase64String(by);
- fs.Close();
- cs.Close();
- ms.Close();
- return "data:image/png;base64," + base64;
- }
- #endregion
说明:加密代码为将图片加密后存储了一份,如果需要删除加密前的图片 自行修改代码
解密部分为 在解密后返回的不是一个图片 而是一个base64 这是我在web开发项目中遇到的问题所要求的。希望能帮助你,谢谢支持!
.NET 图片解密为BASE64的更多相关文章
- Java对网络图片/本地图片转换成Base64编码和解码
一.将本地图片转换成Base64编码字符串 /** * 将本地图片转换成Base64编码字符串 * * @param imgFile 图片目录路径 * @return */ public static ...
- ASP图片格式与base64数据互转方法
ASP图片格式与base64数据相互转换的方法,经常用于处理表单中存储有base64字符串格式的图片. 获取到base64数据,转换成图片 <% Subfolder=year(now)& ...
- 图片转换成Base64编码集成到html文件
首先为什么要这么做? 原因很简单这样可以减少与服务器的请求,当然对于一些浏览器并不支持,如IE8.通常用在手机版网站中,具体转化方法如下: 1.在线打开Base64的编码器将图片编码成Base64 ...
- [前端性能提升]--图片转化为base64
图片的 base64 编码就是可以将一副图片数据编码成一串字符串,使用该字符串代替图像地址 意义:网页上的每一个图片,都是需要消耗一个 http 请求下载而来的(所有才有了 csssprites 技术 ...
- 图片处理之 Base64
网页上的图片资源如果采用 http 形式的 url 的话都会额外发送一次请求,网页发送的 http 请求次数越多,会造成页面加载速度越慢.而采用Base64格式的编码,将图片转化为字符串后,图片文件会 ...
- Base64字符保存图片,图片转换成Base64字符编码
//文件转换成Base64编码 public static String getFileBase64Str(String filePath) throws IOException { String f ...
- java 图片转换成base64字符串
import java.io.ByteArrayOutputStream; import java.io.FileInputStream;import java.io.FileOutputStream ...
- JS将图片转换成Base64码
直接上代码 html页面代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset= ...
- EF+LINQ事物处理 C# 使用NLog记录日志入门操作 ASP.NET MVC多语言 仿微软网站效果(转) 详解C#特性和反射(一) c# API接受图片文件以Base64格式上传图片 .NET读取json数据并绑定到对象
EF+LINQ事物处理 在使用EF的情况下,怎么进行事务的处理,来减少数据操作时的失误,比如重复插入数据等等这些问题,这都是经常会遇到的一些问题 但是如果是我有多个站点,然后存在同类型的角色去操作 ...
随机推荐
- MySQL-TokuDB:MySQL 高性能存储引擎:TokuDB
ylbtech-MySQL-TokuDB:MySQL 高性能存储引擎:TokuDB 1.返回顶部 1. 在安装MariaDB的时候了解到代替InnoDB的TokuDB,看简介非常的棒,这里对ToduD ...
- netcore发布到centos 验证码Zkweb.system.drawing不显示及乱码的问题
netcore发布到centos 使用的是Zkweb.system.drawing生成验证码,发布后可能会出现不显示及乱码的情况 1.验证码图片不显示(通过日志会发现生成图片时代码已经异常) Zkwe ...
- BPM中字段查重,C#Ajac调用示例
BPM中字段查重记录: 这也算是一个C#调用Ajax的示例吧,如果是异步加载的话async: false去掉就可以了. 需求:比如现在要录入一些信息,但是,有一个字段不能重复,BPM表都是自己生成的, ...
- BZOJ 4742 DP
思路: Claris大大说了 排序以后 这个可以看成是括号序列 f[i][j][k]表示到了i j个左括号 k个右括号 (f[i][j][k]+=f[i-1][j][k])%=p; if(node[i ...
- html中DTD使用小结
DTD 是一套关于标记符的语法规则.它是XML1.0版规格得一部分,是html文件的验证机制,属于html文件组成的一部分. DTD:三种文档类型:S(Strict).T(Transitional). ...
- 开源作品-ThinkPHP在线分析工具(单文件绿色版)-TPLogAnalysis_PHP_1_0
TPLogAnalysis_PHP_1_0 前言:项目开发基于ThinkPHP框架,但是在调试程序的时候,没有一款日志可视化分析工具.在网络也找不到任何相关的TP日志分析工具.求人不如求己,于是决定抽 ...
- 用apt-get install一个软件的时候出现错误: 无法解析或打开软件包的列表或是状态文件
用apt-get install一个软件的时候出现了一个错误: E: Encountered a section with no Package: header E: Problem with Mer ...
- Ecshop 扯淡问题
1:解决 :在 temp 文件下创建 backup文件夹 修改权限 2:待补充...
- MongoDB 学习笔记(六):备份与用户管理
一.启动项 1.在启动数据库服务时可以在命令行输入mongod命令,然后直接带一些参数,比如“mongod --dbpath D:\Installations\MongoDB-2.4.6\MongoD ...
- Javaee 内部引用
1.final修饰类,修饰方法,修饰变量有什么特点? final修饰的类不能被继承太监类,可以被继承使用但不能修改,如果父类没有final修饰的方法子类可以添加上,成员变量需要在建类前被赋值且不能改动 ...