C# 圖片加密解密的實例代碼

jopen 10年前發布 | 22K 次閱讀 加密 .NET開發

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

} }</pre>

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!