手机
当前位置:查字典教程网 >编程开发 >C#教程 >c# 图片加密解密的实例代码
c# 图片加密解密的实例代码
摘要:复制代码代码如下:usingSystem;usingSystem.Collections.Generic;usingSystem.Text;...

复制代码 代码如下:

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())

{

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# 实现MD5,SHA1,SHA256,SHA512等常用加密算法源代码

c# 调用.bat文件的实现代码

c# 共享状态的文件读写实现代码

gridview 显示图片的实例代码

C#实现写入与读出文本文件的实例代码

C#实现对AES加密和解密的方法

读取图片像素的具体实例

C#控制台输出进度和百分比的实例代码

C#实现路由器断开连接,更改公网ip的实例代码

C# 图片剪切与缩小的实例

精品推荐
分类导航