.NET 图片解密为BASE64

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: #region 图片加密         ///          /// 加密本地文件         ///          /// 读取文件的路径         /// 要输出的文件路径         /// 密钥         ///          ...
  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.   
  53.   
  54.        #endregion  
  55.   
  56.        #region 图片解密  
  57.        /// <summary>  
  58.        /// 解密图片 返回一个base64  
  59.        /// </summary>  
  60.        /// <param name="filename"></param>  
  61.        /// <param name="key"></param>  
  62.        /// <returns></returns>  
  63.        public string ReadEnImage(string filename, string key = "R4yqHaM%")  
  64.        {  
  65.            //通过des解密  
  66.            DESCryptoServiceProvider des = new DESCryptoServiceProvider();  
  67.   
  68.            //通过流读取文件  
  69.            FileStream fs = File.OpenRead(this.FilePath.Text);  
  70.            //获取文件二进制字符  
  71.            byte[] inputByteArray = new byte[fs.Length];  
  72.            //读取流文件  
  73.            fs.Read(inputByteArray, 0, (int)fs.Length);  
  74.            //关闭流  
  75.            fs.Close();  
  76.            //密钥数组  
  77.            byte[] keyByteArray = Encoding.Default.GetBytes("R4yqHaM%");  
  78.            //定义哈希变量  
  79.            SHA1 ha = new SHA1Managed();  
  80.            //计算指定字节组指定区域哈希值  
  81.            byte[] hb = ha.ComputeHash(keyByteArray);  
  82.            //加密密钥数组  
  83.            byte[] sKey = new byte[8];  
  84.            //加密变量  
  85.            byte[] sIV = new byte[8];  
  86.            for (int i = 0; i 8; i++)  
  87.                sKey[i] = hb[i];  
  88.            for (int i = 8; i 16; i++)  
  89.                sIV[i - 8] = hb[i];  
  90.            //获取加密密钥  
  91.            des.Key = sKey;  
  92.            //加密变量  
  93.            des.IV = sIV;  
  94.            MemoryStream ms = new MemoryStream();  
  95.            CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write);  
  96.            cs.Write(inputByteArray, 0, inputByteArray.Length);  
  97.            cs.FlushFinalBlock();  
  98.            byte[] by = ms.ToArray();  
  99.            string base64 = Convert.ToBase64String(by);  
  100.            fs.Close();  
  101.            cs.Close();  
  102.            ms.Close();  
  103.            return "data:image/png;base64," + base64;  
  104.   
  105.        }  
  106.   
  107.        #endregion  

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

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

相关文章
|
6月前
|
数据安全/隐私保护
.net给图片增加水印和生成图片缩略图
.net给图片增加水印和生成图片缩略图
66 0
|
测试技术 C# Windows
C# WPF 显示图片和视频显示 EmuguCv、AForge.Net测试
原文:C# WPF 显示图片和视频显示 EmuguCv、AForge.Net测试 WPF 没有用到 PictureBox, 而是用Image代替. 下面我试着加载显示一个图片 。 XAML CS Attempt 1: ImageMy_Image=newImage(Openfile.
1863 0
.NET指定图片地址下载并转换Base64字符串
.NET指定图片地址下载并转换Base64字符串
147 0
|
移动开发 小程序 JavaScript
微信小程序开发之多图片上传+.NET WebAPI后端服务保存图片资源
微信小程序开发之多图片上传+.NET WebAPI后端服务保存图片资源
645 0
微信小程序开发之多图片上传+.NET WebAPI后端服务保存图片资源
|
安全 数据安全/隐私保护
Glide显示不出图片,监听报javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException:
Glide框架是当前比较流行的图片加载框架,使用起来也很简单,肯定有人在使用的时候加载不出图片的,情况有多种,下面讲一下加载不出来捕获到的Exception:javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: 。出现这种情况基本上都是加载https出现的
938 0
Glide显示不出图片,监听报javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException:
|
C#
C#/VB.NET 操作Word批注(二)——如何插入图片、读取、回复Word批注内容
序 在前面的文章C# 如何插入、修改、删除Word批注一文中介绍了如何操作Word批注的一些方法,在本篇文章中继续介绍操作Word批注的方法。分以下三种情况来介绍: 1. 插入图片到Word批注 2. 读取Word批注 3.
1498 0
|
Web App开发 C#
C# .NET 根据Url链接保存Image图片到本地磁盘
原文:C# .NET 根据Url链接保存Image图片到本地磁盘 根据一个Image的Url链接可以在浏览器中显示一个图片,如果要通过代码将图片保存在本地磁盘可以通过以下方式: 1、首先获取图片的二进制数组。
2498 0
|
Shell C# 图形学
.net 图片无损压缩
命名空间: using System.Drawing.Imaging; using System.Drawing; using System.Drawing.Drawing2D; #region GetPicThumbnail /// /// 无损压缩图片 ...
1511 0
|
2月前
|
开发框架 前端开发 JavaScript
ASP.NET MVC 教程
ASP.NET 是一个使用 HTML、CSS、JavaScript 和服务器脚本创建网页和网站的开发框架。
43 7
|
2月前
|
存储 开发框架 前端开发
ASP.NET MVC 迅速集成 SignalR
ASP.NET MVC 迅速集成 SignalR
63 0