您的位置:首页 > 编程语言 > C#

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

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: