.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,如需转载请自行联系原作者
目录
相关文章
|
7月前
|
API C++ Windows
Visual C++运行库、.NET Framework和DirectX运行库的作用及常见问题解决方案,涵盖MSVCP140.dll丢失、0xc000007b错误等典型故障的修复方法
本文介绍Visual C++运行库、.NET Framework和DirectX运行库的作用及常见问题解决方案,涵盖MSVCP140.dll丢失、0xc000007b错误等典型故障的修复方法,提供官方下载链接与系统修复工具使用指南。
1783 2
|
存储 数据安全/隐私保护
.NET Core 究竟隐藏着怎样的神秘力量,能实现强身份验证与数据加密?
【8月更文挑战第28天】在数字化时代,数据安全与身份验证至关重要。.NET Core 提供了强大的工具,如 Identity 框架,帮助我们构建高效且可靠的身份验证系统,并支持高度定制化的用户模型和认证逻辑。此外,通过 `System.Security.Cryptography` 命名空间,.NET Core 还提供了丰富的加密算法和工具,确保数据传输和存储过程中的安全性。以下是一个简单的示例,展示如何使用 .NET Core 的 Identity 框架实现用户注册和登录功能。
222 3
|
SQL 缓存 开发框架
分享一个 .NET EF6 应用二级缓存提高性能的方法
分享一个 .NET EF6 应用二级缓存提高性能的方法
255 0
|
存储 网络安全 数据库
YashanDB加密方法
YashanDB加密方法
|
存储 缓存 Java
java语言后台管理ruoyi后台管理框架-登录提示“无效的会话,或者会话已过期,请重新登录。”-扩展知识数据库中密码加密的方法-问题如何解决-以及如何重置若依后台管理框架admin密码-优雅草卓伊凡
java语言后台管理ruoyi后台管理框架-登录提示“无效的会话,或者会话已过期,请重新登录。”-扩展知识数据库中密码加密的方法-问题如何解决-以及如何重置若依后台管理框架admin密码-优雅草卓伊凡
2345 3
java语言后台管理ruoyi后台管理框架-登录提示“无效的会话,或者会话已过期,请重新登录。”-扩展知识数据库中密码加密的方法-问题如何解决-以及如何重置若依后台管理框架admin密码-优雅草卓伊凡
|
算法 安全 数据安全/隐私保护
链接加密的方法有哪些?
【10月更文挑战第6天】链接加密的方法有哪些?
1525 10
|
安全 数据安全/隐私保护 开发者
保护敏感数据:使用Python加密数据的实用方法
保护敏感数据是一项基本的安全实践,Python通过上述库提供了强大的加密工具来实现这一目标。选择哪种方法取决于具体的应用场景和安全需求:对称加密(如AES)适合快速处理大量数据,而非对称加密(如RSA)更适合安全地交换密钥或进行身份验证。哈希函数则用于验证数据的完整性和一致性。通过合理使用这些技术,开发者可以大大增强其应用程序的安全性。
795 0
|
程序员 数据库
分享 2 个 .NET EF 6 只更新某些字段的方法
分享 2 个 .NET EF 6 只更新某些字段的方法
431 0
|
数据库
分享一个 .NET EF 6 扩展 Where 的方法
分享一个 .NET EF 6 扩展 Where 的方法
229 0