zoukankan      html  css  js  c++  java
  • .NET 图片解密为BASE64

    1. #region 图片加密  
    2.        /// <summary>  
    3.        /// 加密本地文件  
    4.        /// </summary>  
    5.        /// <param name="inputname">读取文件的路径</param>  
    6.        /// <param name="outname">要输出的文件路径</param>  
    7.        /// <param name="key">密钥</param>  
    8.        /// <returns></returns>  
    9.        public bool EncrptFile(string inputname, string outname, string key = "R4yqHaM%")  
    10.        {  
    11.            //通过des加密   
    12.            DESCryptoServiceProvider des = new DESCryptoServiceProvider();  
    13.            //通过流打开文件   
    14.            FileStream fs = System.IO.File.OpenRead(inputname);  
    15.            //获取文件二进制字符   
    16.            byte[] inputByteArray = new byte[fs.Length];  
    17.            //读流文件   
    18.            fs.Read(inputByteArray, 0, (int)fs.Length);  
    19.            //关闭流   
    20.            fs.Close();  
    21.            //获得加密字符串二进制字符   
    22.            byte[] keyByteArray = Encoding.Default.GetBytes(key);  
    23.            //计算指定字节组指定区域哈希值   
    24.            SHA1 ha = new SHA1Managed();  
    25.            byte[] hb = ha.ComputeHash(keyByteArray);  
    26.            //加密密钥数组   
    27.            byte[] sKey = new byte[8];  
    28.            //加密变量   
    29.            byte[] sIV = new byte[8];  
    30.            for (int i = 0; i 8; i++)  
    31.                sKey[i] = hb[i];  
    32.            for (int i = 8; i 16; i++)  
    33.                sIV[i - 8] = hb[i];  
    34.            //获取加密密钥   
    35.            des.Key = sKey;  
    36.            //设置加密初始化向量   
    37.            des.IV = sIV;  
    38.            MemoryStream ms = new MemoryStream();  
    39.            CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write);  
    40.            cs.Write(inputByteArray, 0, inputByteArray.Length);  
    41.            cs.FlushFinalBlock();  
    42.            fs = System.IO.File.OpenWrite(outname);  
    43.            foreach (byte b in ms.ToArray())  
    44.            {  
    45.                fs.WriteByte(b);  
    46.            }  
    47.            fs.Close();  
    48.            cs.Close();  
    49.            ms.Close();  
    50.            return true;  
    51.        }  
    52.   
    53.   
    54.        #endregion  
    55.   
    56.        #region 图片解密  
    57.        /// <summary>  
    58.        /// 解密图片 返回一个base64  
    59.        /// </summary>  
    60.        /// <param name="filename"></param>  
    61.        /// <param name="key"></param>  
    62.        /// <returns></returns>  
    63.        public string ReadEnImage(string filename, string key = "R4yqHaM%")  
    64.        {  
    65.            //通过des解密  
    66.            DESCryptoServiceProvider des = new DESCryptoServiceProvider();  
    67.   
    68.            //通过流读取文件  
    69.            FileStream fs = File.OpenRead(this.FilePath.Text);  
    70.            //获取文件二进制字符  
    71.            byte[] inputByteArray = new byte[fs.Length];  
    72.            //读取流文件  
    73.            fs.Read(inputByteArray, 0, (int)fs.Length);  
    74.            //关闭流  
    75.            fs.Close();  
    76.            //密钥数组  
    77.            byte[] keyByteArray = Encoding.Default.GetBytes("R4yqHaM%");  
    78.            //定义哈希变量  
    79.            SHA1 ha = new SHA1Managed();  
    80.            //计算指定字节组指定区域哈希值  
    81.            byte[] hb = ha.ComputeHash(keyByteArray);  
    82.            //加密密钥数组  
    83.            byte[] sKey = new byte[8];  
    84.            //加密变量  
    85.            byte[] sIV = new byte[8];  
    86.            for (int i = 0; i 8; i++)  
    87.                sKey[i] = hb[i];  
    88.            for (int i = 8; i 16; i++)  
    89.                sIV[i - 8] = hb[i];  
    90.            //获取加密密钥  
    91.            des.Key = sKey;  
    92.            //加密变量  
    93.            des.IV = sIV;  
    94.            MemoryStream ms = new MemoryStream();  
    95.            CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write);  
    96.            cs.Write(inputByteArray, 0, inputByteArray.Length);  
    97.            cs.FlushFinalBlock();  
    98.            byte[] by = ms.ToArray();  
    99.            string base64 = Convert.ToBase64String(by);  
    100.            fs.Close();  
    101.            cs.Close();  
    102.            ms.Close();  
    103.            return "data:image/png;base64," + base64;  
    104.   
    105.        }  
    106.   
    107.        #endregion  

    说明:加密代码为将图片加密后存储了一份,如果需要删除加密前的图片  自行修改代码

    解密部分为  在解密后返回的不是一个图片  而是一个base64   这是我在web开发项目中遇到的问题所要求的。希望能帮助你,谢谢支持!

  • 相关阅读:
    【leetcode】974. Subarray Sums Divisible by K
    【leetcode】976. Largest Perimeter Triangle
    【leetcode】973. K Closest Points to Origin
    listen 70
    科学60秒 (一) :上
    listen 69
    listen 68 Theoretical Physicist Stephen Hawking Dies at 76
    中译英33
    listen 67
    中译英32
  • 原文地址:https://www.cnblogs.com/cnhonker/p/9002276.html
Copyright © 2011-2022 走看看