• c# 图片加密解密的实例代码


    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
    }
    }
  • 相关阅读:
    复盘MySQL(存储引擎、事务)通俗易懂!
    elasticsearch + logstash + kinaba 数据库自动同步es
    安装kinaba
    安装logstash
    安装ik中文分词器
    安装elasticsearch
    魔兽争霸3地图编辑 预览图制作方法和载入图制作方法 详细记录
    搭建后数据库连接成功 但是无法登陆SQLSTATE[HY000] [2002] Connection refused 记录
    蜻蜓直播社交软件之蜻蜓s前端文件目录详解-开源系统蜻蜓s系统
    靠谱可用的discuz管理员 密码找回方法 , discuz 管理员密码被改,密码忘记,密码如何重置
  • 原文地址:https://www.cnblogs.com/linuxnotes/p/3290667.html
Copyright © 2020-2023  润新知