资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

.Net对图片加密解密的方法-创新互联

可能有朋友想对一张图片加密?(这样的描述是否很奇怪。)
然后自己可以解密,而别人不行?
那么不妨有个思路就是读入文件,然后对其二进制代码进行加密~揭秘的时候反之即可。

下面是演示代码~

创新互联建站-成都网站建设公司,专注网站设计制作、成都网站设计、网站营销推广,域名与空间,虚拟主机网站托管运营有关企业网站制作方案、改版、费用等问题,请联系创新互联建站
using System; 
using System.Collections.Generic; 
using System.Text; 
using System.Security.Cryptography; 
using System.IO; 
namespace Net.Template.Common 
{ 
///   /// 对图片的加密和解密  ///  
public class DEncrypt4ImageHelper 
{ 
public DEncrypt4ImageHelper() { } 
#region 加密方法 图片加密 
///   /// 图片加密  ///   /// 源文件  /// 保存为文件名称  /// 密钥 
public static void EncryptFile(string filePath, string savePath, string keyStr) 
{ 
//通过des加密 
DESCryptoServiceProvider des = new DESCryptoServiceProvider(); 
//通过流打开文件 
FileStream fs = File.OpenRead(filePath); 
//获取文件二进制字符  byte[] inputByteArray = newbyte[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 = newbyte[8]; 
//加密变量  byte[] sIV = newbyte[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 解密方法 图片解密 
///   /// 图片解密  ///   /// 源文件  /// 保存文件  /// 密钥 
public static void DecryptFile(string filePath, string savePath, string keyStr) 
{ 
//通过des解密 
DESCryptoServiceProvider des = new DESCryptoServiceProvider(); 
//通过流读取文件 
FileStream fs = File.OpenRead(filePath); 
//获取文件二进制字符  byte[] inputByteArray = newbyte[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 = newbyte[8]; 
//加密变量  byte[] sIV = newbyte[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 
} 
}

创新互联www.cdcxhl.cn,专业提供香港、美国云服务器,动态BGP最优骨干路由自动选择,持续稳定高效的网络助力业务部署。公司持有工信部办法的idc、isp许可证, 机房独有T级流量清洗系统配攻击溯源,准确进行流量调度,确保服务器高可用性。佳节活动现已开启,新人活动云服务器买多久送多久。


分享标题:.Net对图片加密解密的方法-创新互联
转载注明:http://cdkjz.cn/article/dghehj.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

大客户专线   成都:13518219792   座机:028-86922220