zoukankan      html  css  js  c++  java
  • C# DESC加密

    DESC加密方法

    直接上代码:

    1、加密

    /// <summary>
            /// 加密
            /// </summary>
            /// <param name="obj"></param>
            /// <returns></returns>
            public static string EncryptParameter(object obj)
            {
                if (obj == null)
                {
                    return "";
                }
                StringBuilder builder = new StringBuilder();
                try
                {
                    string str = obj.ToString();
                    DESCryptoServiceProvider provider = new DESCryptoServiceProvider();
    
                    provider.Key = Encoding.UTF8.GetBytes(_securityKey);
    
                    provider.IV = Encoding.UTF8.GetBytes(_securityKey);
    
                    byte[] bytes = Encoding.UTF8.GetBytes(str);
    
                    MemoryStream stream = new MemoryStream();
    
                    CryptoStream stream2 = new CryptoStream(stream, provider.CreateEncryptor(), CryptoStreamMode.Write);
    
                    stream2.Write(bytes, 0, bytes.Length);
    
                    stream2.FlushFinalBlock();
    
                    foreach (byte num in stream.ToArray())
                    {
    
                        builder.AppendFormat("{0:X2}", num);
                    }
    
                    stream.Close();
    
                }
                catch (Exception ex)
                {
                    LogHelper.LogError(ex);
                }
                return builder.ToString();
    
            }
    View Code

    2、解密

            /// <summary>
            /// 解密
            /// </summary>
            /// <param name="str"></param>
            /// <returns></returns>
            public static string DecryptParameter(string str)
            {
                try
                {
                    DESCryptoServiceProvider provider = new DESCryptoServiceProvider();
    
                    provider.Key = Encoding.ASCII.GetBytes(_securityKey);
    
                    provider.IV = Encoding.ASCII.GetBytes(_securityKey);
    
                    byte[] buffer = new byte[str.Length / 2];
    
                    for (int i = 0; i < (str.Length / 2); i++)
                    {
    
                        int num2 = Convert.ToInt32(str.Substring(i * 2, 2), 0x10);
    
                        buffer[i] = (byte)num2;
    
                    }
    
                    MemoryStream stream = new MemoryStream();
    
                    CryptoStream stream2 = new CryptoStream(stream, provider.CreateDecryptor(), CryptoStreamMode.Write);
    
                    stream2.Write(buffer, 0, buffer.Length);
    
                    stream2.FlushFinalBlock();
    
                    stream.Close();
    
                    return Encoding.GetEncoding("GB2312").GetString(stream.ToArray());
                }
                catch
                {
                    return string.Empty;
                }
            }
    View Code

    设置一个_securityKey字符串,加密、解密的密钥要同一个才行。

    因此正如其它人加密后的文件,用常用方法是打不开的,密钥不一样~

  • 相关阅读:
    Android(java)学习笔记204:JNI之native方法头文件的生成
    Linux学习笔记01:Linux下的drwxr-xr-x
    Java基础知识强化49:10个实用的但偏执的Java编程技术
    大数据笔记12:Hadoop安装之安装JDK
    大数据笔记11:MapReduce的运行流程
    大数据笔记10:大数据之Hadoop的MapReduce的原理
    大数据笔记09:大数据之Hadoop的HDFS使用
    大数据笔记08:云计算(云)
    Java基础知识强化48:Java中哈希码
    hdu 1397 (素数判定)
  • 原文地址:https://www.cnblogs.com/kybs0/p/5816195.html
Copyright © 2011-2022 走看看