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字符串,加密、解密的密钥要同一个才行。

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

  • 相关阅读:
    一日一技:微信开发-自定义菜单
    Redis五种数据结构
    .NET 5 部署在docker上运行
    一日一技:微信开发-发送模板消息
    Redis快速入门及应用
    面试官扎心一问:防止重复请求提交,有什么方案?
    在Windows上安装Docker
    上班摸鱼神器—VSCode 里也可以看股票 & 基金实时数据
    C# Nuget程序集StackExchange.Redis操作Redis 及 Redis 视频资源 及 相关入门指令 牛逼不,全都有
    Mongodb 更新某一条记录 C#
  • 原文地址:https://www.cnblogs.com/kybs0/p/5816195.html
Copyright © 2011-2022 走看看