大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
可能有朋友想对一张图片加密?(这样的描述是否很奇怪。)
然后自己可以解密,而别人不行?
那么不妨有个思路就是读入文件,然后对其二进制代码进行加密~揭秘的时候反之即可。
下面是演示代码~
创新互联建站-成都网站建设公司,专注网站设计制作、成都网站设计、网站营销推广,域名与空间,虚拟主机,网站托管运营有关企业网站制作方案、改版、费用等问题,请联系创新互联建站。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级流量清洗系统配攻击溯源,准确进行流量调度,确保服务器高可用性。佳节活动现已开启,新人活动云服务器买多久送多久。