c# 图片加密解密的实例代码
2013-08-30 06:09
651 查看
c# 图片加密解密的实例代码。
代码:
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 = new byte[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 = 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 = File.OpenWrite(savePath);
foreach (byte b in ms.ToArray())
{ www.jbxue.com
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 = new byte[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 = 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();
fs = File.OpenWrite(savePath);
foreach (byte b in ms.ToArray())
{
fs.WriteByte(b);
}
fs.Close();
cs.Close();
ms.Close();
}
#endregion
}
}
代码:
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 = new byte[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 = 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 = File.OpenWrite(savePath);
foreach (byte b in ms.ToArray())
{ www.jbxue.com
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 = new byte[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 = 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();
fs = File.OpenWrite(savePath);
foreach (byte b in ms.ToArray())
{
fs.WriteByte(b);
}
fs.Close();
cs.Close();
ms.Close();
}
#endregion
}
}
相关文章推荐
- c# 图片加密解密的实例代码
- C#的3DES加密解密算法实例代码
- 一组PHP可逆加密解密算法实例代码
- C#代码实现对AES加密解密
- asp实现的sha1加密解密代码(和C#兼容)
- C#实现在listview中插入图片实例代码
- C# 将透明图片的非透明区域转换成Region的实例代码
- c#多图片上传并生成缩略图的实例代码
- C#微信小程序服务端获取用户解密信息实例代码
- 用C# 加密字符串后、再用C++解密字符串的各自代码
- C#实现数据包加密与解密实例详解
- 一组PHP可逆加密解密算法实例代码
- Visual Studio 2017中使用正则修改部分内容 如何使用ILAsm与ILDasm修改.Net exe(dll)文件 C#学习-图解教程(1):格式化数字字符串 小程序开发之图片转Base64(C#、.Net) jquery遍历table为每一个单元格取值及赋值 。net加密解密相关方法 .net关于坐标之间一些简单操作
- c# 通过修改图片对象的文件的字节 变相"加密""解密"图片在磁盘的存储
- C# 手动/自动保存图片的实例代码
- Axis2 Web Service安全之rampart 【加密解密的基本概念以及实例代码】
- c# 通过修改图片对象的文件的字节 变相"加密""解密"图片在磁盘的存储
- C# 数据库链接字符串加密解密工具代码详解
- Java使用异或运算实现简单的加密解密算法实例代码