代码:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Text;
usingSystem.Security.Cryptography;
usingSystem.IO;
namespaceNet.Template.Common
{
///<summary>
///对图片的加密和解密
///</summary>
publicclassDEncrypt4ImageHelper
{
publicDEncrypt4ImageHelper(){}
#region加密方法图片加密
///<summary>
///图片加密
///</summary>
///<paramname="filePath">源文件</param>
///<paramname="savePath">保存为文件名称</param>
///<paramname="keyStr">密钥</param>
publicstaticvoidEncryptFile(stringfilePath,stringsavePath,stringkeyStr)
{
//通过des加密
DESCryptoServiceProviderdes=newDESCryptoServiceProvider();
//通过流打开文件
FileStreamfs=File.OpenRead(filePath);
//获取文件二进制字符
byte[]inputByteArray=newbyte[fs.Length];
//读流文件
fs.Read(inputByteArray,0,(int)fs.Length);
//关闭流
fs.Close();
//获得加密字符串二进制字符
byte[]keyByteArray=Encoding.Default.GetBytes(keyStr);
//计算指定字节组指定区域哈希值
SHA1ha=newSHA1Managed();
byte[]hb=ha.ComputeHash(keyByteArray);
//加密密钥数组
byte[]sKey=newbyte[8];
//加密变量
byte[]sIV=newbyte[8];
for(inti=0;i<8;i++)
sKey[i]=hb[i];
for(inti=8;i<16;i++)
sIV[i-8]=hb[i];
//获取加密密钥
des.Key=sKey;
//设置加密初始化向量
des.IV=sIV;
MemoryStreamms=newMemoryStream();
CryptoStreamcs=newCryptoStream(ms,des.CreateEncryptor(),CryptoStreamMode.Write);
cs.Write(inputByteArray,0,inputByteArray.Length);
cs.FlushFinalBlock();
fs=File.OpenWrite(savePath);
foreach(bytebinms.ToArray())
{ www.jbxue.com
fs.WriteByte(b);
}
fs.Close();
cs.Close();
ms.Close();
}
#endregion
#region解密方法图片解密
///<summary>
///图片解密
///</summary>
///<paramname="filePath">源文件</param>
///<paramname="savePath">保存文件</param>
///<paramname="keyStr">密钥</param>
publicstaticvoidDecryptFile(stringfilePath,stringsavePath,stringkeyStr)
{
//通过des解密
DESCryptoServiceProviderdes=newDESCryptoServiceProvider();
//通过流读取文件
FileStreamfs=File.OpenRead(filePath);
//获取文件二进制字符
byte[]inputByteArray=newbyte[fs.Length];
//读取流文件
fs.Read(inputByteArray,0,(int)fs.Length);
//关闭流
fs.Close();
//密钥数组
byte[]keyByteArray=Encoding.Default.GetBytes(keyStr);
//定义哈希变量
SHA1ha=newSHA1Managed();
//计算指定字节组指定区域哈希值
byte[]hb=ha.ComputeHash(keyByteArray);
//加密密钥数组
byte[]sKey=newbyte[8];
//加密变量
byte[]sIV=newbyte[8];
for(inti=0;i<8;i++)
sKey[i]=hb[i];
for(inti=8;i<16;i++)
sIV[i-8]=hb[i];
//获取加密密钥
des.Key=sKey;
//加密变量
des.IV=sIV;
MemoryStreamms=newMemoryStream();
CryptoStreamcs=newCryptoStream(ms,des.CreateDecryptor(),CryptoStreamMode.Write);
cs.Write(inputByteArray,0,inputByteArray.Length);
cs.FlushFinalBlock();
fs=File.OpenWrite(savePath);
foreach(bytebinms.ToArray())
{
fs.WriteByte(b);
}
fs.Close();
cs.Close();
ms.Close();
}
#endregion
}
}
usingSystem.Collections.Generic;
usingSystem.Text;
usingSystem.Security.Cryptography;
usingSystem.IO;
namespaceNet.Template.Common
{
///<summary>
///对图片的加密和解密
///</summary>
publicclassDEncrypt4ImageHelper
{
publicDEncrypt4ImageHelper(){}
#region加密方法图片加密
///<summary>
///图片加密
///</summary>
///<paramname="filePath">源文件</param>
///<paramname="savePath">保存为文件名称</param>
///<paramname="keyStr">密钥</param>
publicstaticvoidEncryptFile(stringfilePath,stringsavePath,stringkeyStr)
{
//通过des加密
DESCryptoServiceProviderdes=newDESCryptoServiceProvider();
//通过流打开文件
FileStreamfs=File.OpenRead(filePath);
//获取文件二进制字符
byte[]inputByteArray=newbyte[fs.Length];
//读流文件
fs.Read(inputByteArray,0,(int)fs.Length);
//关闭流
fs.Close();
//获得加密字符串二进制字符
byte[]keyByteArray=Encoding.Default.GetBytes(keyStr);
//计算指定字节组指定区域哈希值
SHA1ha=newSHA1Managed();
byte[]hb=ha.ComputeHash(keyByteArray);
//加密密钥数组
byte[]sKey=newbyte[8];
//加密变量
byte[]sIV=newbyte[8];
for(inti=0;i<8;i++)
sKey[i]=hb[i];
for(inti=8;i<16;i++)
sIV[i-8]=hb[i];
//获取加密密钥
des.Key=sKey;
//设置加密初始化向量
des.IV=sIV;
MemoryStreamms=newMemoryStream();
CryptoStreamcs=newCryptoStream(ms,des.CreateEncryptor(),CryptoStreamMode.Write);
cs.Write(inputByteArray,0,inputByteArray.Length);
cs.FlushFinalBlock();
fs=File.OpenWrite(savePath);
foreach(bytebinms.ToArray())
{ www.jbxue.com
fs.WriteByte(b);
}
fs.Close();
cs.Close();
ms.Close();
}
#endregion
#region解密方法图片解密
///<summary>
///图片解密
///</summary>
///<paramname="filePath">源文件</param>
///<paramname="savePath">保存文件</param>
///<paramname="keyStr">密钥</param>
publicstaticvoidDecryptFile(stringfilePath,stringsavePath,stringkeyStr)
{
//通过des解密
DESCryptoServiceProviderdes=newDESCryptoServiceProvider();
//通过流读取文件
FileStreamfs=File.OpenRead(filePath);
//获取文件二进制字符
byte[]inputByteArray=newbyte[fs.Length];
//读取流文件
fs.Read(inputByteArray,0,(int)fs.Length);
//关闭流
fs.Close();
//密钥数组
byte[]keyByteArray=Encoding.Default.GetBytes(keyStr);
//定义哈希变量
SHA1ha=newSHA1Managed();
//计算指定字节组指定区域哈希值
byte[]hb=ha.ComputeHash(keyByteArray);
//加密密钥数组
byte[]sKey=newbyte[8];
//加密变量
byte[]sIV=newbyte[8];
for(inti=0;i<8;i++)
sKey[i]=hb[i];
for(inti=8;i<16;i++)
sIV[i-8]=hb[i];
//获取加密密钥
des.Key=sKey;
//加密变量
des.IV=sIV;
MemoryStreamms=newMemoryStream();
CryptoStreamcs=newCryptoStream(ms,des.CreateDecryptor(),CryptoStreamMode.Write);
cs.Write(inputByteArray,0,inputByteArray.Length);
cs.FlushFinalBlock();
fs=File.OpenWrite(savePath);
foreach(bytebinms.ToArray())
{
fs.WriteByte(b);
}
fs.Close();
cs.Close();
ms.Close();
}
#endregion
}
}
本文介绍了使用.NET框架实现图片的DES加密与解密过程,包括加密方法和解密方法的详细步骤。

317

被折叠的 条评论
为什么被折叠?



