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)
{
DESCryptoServiceProvider des =
new
DESCryptoServiceProvider();
FileStream fs = File.OpenRead(filePath);
fs.Read(inputByteArray, 0, (
int
)fs.Length);
fs.Close();
SHA1 ha =
new
SHA1Managed();
byte
[] hb = ha.ComputeHash(keyByteArray);
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())
{
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)
{
DESCryptoServiceProvider des =
new
DESCryptoServiceProvider();
FileStream fs = File.OpenRead(filePath);
fs.Read(inputByteArray, 0, (
int
)fs.Length);
fs.Close();
SHA1 ha =
new
SHA1Managed();
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
}
}