.Net对图片加密解密的方法

简介:
可能有朋友想对一张图片加密?(这样的描述是否很奇怪。)

然后自己可以解密,而别人不行?

那么不妨有个思路就是读入文件,然后对其二进制代码进行加密~揭秘的时候反之即可。

下面是演示代码~ 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
using  System;
using  System.Collections.Generic;
using  System.Text;
using  System.Security.Cryptography;
using  System.IO;
namespace  Net.Template.Common
{
/// <summary>  /// 对图片的加密和解密  /// </summary>
public  class  DEncrypt4ImageHelper
{
public  DEncrypt4ImageHelper() { }
#region 加密方法 图片加密
/// <summary>  /// 图片加密  /// </summary>  /// <param name="filePath">源文件</param>  /// <param name="savePath">保存为文件名称</param>  /// <param name="keyStr">密钥</param>
public  static  void  EncryptFile( string  filePath,  string  savePath,  string  keyStr)
{
//通过des加密
DESCryptoServiceProvider des =  new  DESCryptoServiceProvider();
//通过流打开文件
FileStream fs = File.OpenRead(filePath);
//获取文件二进制字符  byte[] inputByteArray = newbyte[fs.Length];
//读流文件
fs.Read(inputByteArray, 0, ( int )fs.Length);
//关闭流
fs.Close();
//获得加密字符串二进制字符  byte[] keyByteArray = Encoding.Default.GetBytes(keyStr);
//计算指定字节组指定区域哈希值
SHA1 ha =  new  SHA1Managed();
byte [] hb = ha.ComputeHash(keyByteArray);
//加密密钥数组  byte[] sKey = newbyte[8];
//加密变量  byte[] sIV = newbyte[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 = File.OpenWrite(savePath);
foreach  ( byte  in  ms.ToArray())
{
fs.WriteByte(b);
}
fs.Close();
cs.Close();
ms.Close();
}
#endregion#region 解密方法 图片解密
/// <summary>  /// 图片解密  /// </summary>  /// <param name="filePath">源文件</param>  /// <param name="savePath">保存文件</param>  /// <param name="keyStr">密钥</param>
public  static  void  DecryptFile( string  filePath,  string  savePath,  string  keyStr)
{
//通过des解密
DESCryptoServiceProvider des =  new  DESCryptoServiceProvider();
//通过流读取文件
FileStream fs = File.OpenRead(filePath);
//获取文件二进制字符  byte[] inputByteArray = newbyte[fs.Length];
//读取流文件
fs.Read(inputByteArray, 0, ( int )fs.Length);
//关闭流
fs.Close();
//密钥数组  byte[] keyByteArray = Encoding.Default.GetBytes(keyStr);
//定义哈希变量
SHA1 ha =  new  SHA1Managed();
//计算指定字节组指定区域哈希值  byte[] hb = ha.ComputeHash(keyByteArray);
//加密密钥数组  byte[] sKey = newbyte[8];
//加密变量  byte[] sIV = newbyte[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();
fs = File.OpenWrite(savePath);
foreach  ( byte  in  ms.ToArray())
{
fs.WriteByte(b);
}
fs.Close();
cs.Close();
ms.Close();
}
#endregion
}
}









本文转自 OH51888 51CTO博客,原文链接:http://blog.51cto.com/rozbo/1286420,如需转载请自行联系原作者
目录
相关文章
|
1月前
|
安全 API 开发工具
oss加密的配置方法
阿里云OSS提供多种加密选项:SSE-OSS(默认或对象级AES-256加密)、SSE-KMS(使用KMS托管CMK)、临时密钥加密和客户端加密(CSE)。可通过控制台或API设置Bucket策略,使用HTTP头部指定加密方式。KMS和临时密钥可能涉及更复杂的密钥管理和权限配置。
140 5
|
3月前
|
数据安全/隐私保护
.net给图片增加水印和生成图片缩略图
.net给图片增加水印和生成图片缩略图
35 0
|
4月前
|
存储 数据挖掘 数据安全/隐私保护
11.Java方法的综合练习题大全-双色球彩票系统,数字的加密和解密等试题(上)
11.Java方法的综合练习题大全-双色球彩票系统,数字的加密和解密等试题
78 1
|
4月前
|
存储 算法 Java
11.Java方法的综合练习题大全-双色球彩票系统,数字的加密和解密等试题(下)
11.Java方法的综合练习题大全-双色球彩票系统,数字的加密和解密等试题(上)
82 1
|
6月前
|
数据安全/隐私保护 Python
Python hashlib 加密方法(MD5、SHA1、SHA256、SHA52)
Python hashlib 加密方法(MD5、SHA1、SHA256、SHA52)
|
6月前
|
Windows
​史上最详细的Windows10系统离线安装.NET Framework 3.5的方法(附离线安装包下载)
​史上最详细的Windows10系统离线安装.NET Framework 3.5的方法(附离线安装包下载)
584 0
|
3月前
|
安全 Java 数据安全/隐私保护
Android和iOS应用程序加固方法详解:混淆、加壳、数据加密、动态加载和数字签名实现
Android和iOS应用程序加固方法详解:混淆、加壳、数据加密、动态加载和数字签名实现
74 0
|
3月前
|
存储 算法 前端开发
面试官:你能说说常见的前端加密方法吗?
面试官:你能说说常见的前端加密方法吗?
179 0
|
4月前
|
C# 数据安全/隐私保护
一款实用的.NET Core加密解密工具类库
一款实用的.NET Core加密解密工具类库
|
4月前
|
数据采集 前端开发 算法
前端加密的常见场景和方法
前端加密的常见场景和方法