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, , (int)fs.Length); //关闭流 fs.Close(); //获得加密字符串二进制字符 byte[] keyByteArray = Encoding.Default.GetBytes(keyStr); //计算指定字节组指定区域哈希值 SHA1 ha = new SHA1Managed(); byte[] hb = ha.ComputeHash(keyByteArray); //加密密钥数组 byte[] sKey = new byte[]; //加密变量 byte[] sIV = new byte[]; for (int i = ; i < ; i++) sKey[i] = hb[i]; for (int i = ; i < ; i++) sIV[i - ] = hb[i]; //获取加密密钥 des.Key = sKey; //设置加密初始化向量 des.IV = sIV; MemoryStream ms = new MemoryStream(); CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write); cs.Write(inputByteArray, , 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, , (int)fs.Length); //关闭流 fs.Close(); //密钥数组 byte[] keyByteArray = Encoding.Default.GetBytes(keyStr); //定义哈希变量 SHA1 ha = new SHA1Managed(); //计算指定字节组指定区域哈希值 byte[] hb = ha.ComputeHash(keyByteArray); //加密密钥数组 byte[] sKey = new byte[]; //加密变量 byte[] sIV = new byte[]; for (int i = ; i < ; i++) sKey[i] = hb[i]; for (int i = ; i < ; i++) sIV[i - ] = hb[i]; //获取加密密钥 des.Key = sKey; //加密变量 des.IV = sIV; MemoryStream ms = new MemoryStream(); CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write); cs.Write(inputByteArray, , 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# 图片加密解密的实例代码的更多相关文章
- Base64加密解密原理以及代码实现(VC++)
Base64加密解密原理以及代码实现 转自:http://blog.csdn.net/jacky_dai/article/details/4698461 1. Base64使用A--Z,a--z,0- ...
- cocos2dx图片加密解密(npk方式)
话不多说,直接开始: 准备的工具: 链接:https://pan.baidu.com/s/1Om4kBNWcG2jL_RTsHqqzpQ 提取码:bv7i npkCreate.exe是加密图片的工具, ...
- php实现图片加密解密,支持加盐
一个简单的图片加解密函数 使用client跑,不要使用浏览器跑 qq845875470 ,技术交流 <?php /** * Created by hello. * User: qq 845875 ...
- RSA 加密解密使用实例
http://www.dtmao.cc/news_show_692109.shtml 本文不讨论RSA加密解密本身,只记录使用方法及遇到的坑,RSA原理及注意事项可在网上查找. 背景:公司的一个需求, ...
- Base64加密解密原理以及代码实现
1. Base64使用A--Z,a--z,0--9,+,/ 这64个字符. 2. 编码原理:将3个字节转换成4个字节( (3 X 8) = 24 = (4 X 6) )先读入3个字节,每读一个字 ...
- RSA非对称加密(java实例代码)
使用RSA对WebService传递的信息加密解密的基本思想是:服务器端提供一个WebService方法String getServerPublicKey(),客户端可以以此得到服务器端的公钥,然后使 ...
- 基于RSA的加密/解密示例C#代码
using System;using System.Security.Cryptography;using System.Text; class RSACSPSample{ static void M ...
- php结合md5的加密解密算法实例
<?php /* * Created on 2016-12-22 * */ function encrypt($data, $key){ $key = md5($key); $x = 0; $l ...
- js, javascript 图片懒加载 实例代码
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
随机推荐
- BZOJ2820 YY的GCD 莫比乌斯+系数前缀和
/** 题目:BZOJ2820 YY的GCD 链接:http://www.cogs.pro/cogs/problem/problem.php?pid=2165 题意:神犇YY虐完数论后给傻×kAc出了 ...
- text样式
text-stroke(文本描边)和text-fill-color(文本填充色)注意点: 目前这两个属性只有webkit内核的Safari和Chrome支持,例如: -webkit-text-stro ...
- python 学习笔记 if语句
一.if语句的格式 语句块必须有相同的缩进. 语句块必须比if,elif,else多一层缩进 # 如果条件成立则执行语句块1, # 否则 如果条件2成立则执行语句块2 # 其他情况执行语句块3 # e ...
- 消耗资源的SQL的定位方法;
解答:select sql_text from v$sql where disk_reads > 1000 or (executions > 0 and buffer_gets/execu ...
- Timer类与TimerTask类
有个schedule方法,可以指定过多长时间定期的执行某个程序或某段代码,或者过多长时间启动一个线程等. TimerTask类实现了Runnable接口,要执行的类由它里面实现的run方法来完成. 编 ...
- Python_selenium之窗口切换
Python_selenium之窗口切换 1. 运用switch_to.window()方法来进行窗口切换 2. 思路拆分: 浏览器获取百度贴吧网址 点击定位到一个元素,获取当前的句柄 获得所有的句柄 ...
- DataContract 和 DataMember
数据契约(DataContract) 服务契约定义了远程访问对象和可供调用的方法,数据契约则是服务端和客户端之间要传送的自定义数据类型. 一旦声明一个类型为DataContract,那么该类型就可以被 ...
- Cocos2d-x 3.0final 终结者系列教程08-画图节点Node中的锚点和坐标系
图片问答,(仅仅要回答正确,锚点和坐标系就学会了) 1.下图一共同拥有几个填充为淡黄色的实心矩形? 选择:A,2个 B, 4个 C,1个 D,16个 答案.B.4个 2.下图的4个实心矩形排列在几行 ...
- 关于vs2013中包含目录,以及库目录配置相对路径的问题
记住一句话即可! 相对路径: 是相对于你的工程的*.vcxproj的路径!!!
- Hadoop 2.0 NameNode HA和Federation实践【转】
Hadoop 2.0 NameNode HA和Federation实践 Posted on 2012/12/10 一.背景 天云趋势在2012年下半年开始为某大型国有银行的历史交易数据备份及查询提供基 ...