• C# DES加密


    C#的DES加密,一个demo记录一下。

    DES加密管理类

        /// <summary>
        /// DES加密管理类
        /// </summary>
        public class DESEncryptHelper
        {
            private static string DES_Key = "****************";
            /// <summary>
            /// DES加密
            /// </summary>
            /// <param name="str">需要加密的</param>
            /// <returns></returns>
            public static string Encrypt(string str)
            {
                if (string.IsNullOrEmpty(str))
                {
                    return "加密处理失败,加密字符串为空";
                }
                //加密秘钥补位处理
                string encryptKeyall = Convert.ToString(DES_Key);    //定义密钥  
                if (encryptKeyall.Length < 9)
                {
                    for (; ; )
                    {
                        if (encryptKeyall.Length < 9)
                            encryptKeyall += encryptKeyall;
                        else
                            break;
                    }
                }
                string encryptKey = encryptKeyall.Substring(0, 8);
                DES_Key = encryptKey;
    
                DESCryptoServiceProvider des = new DESCryptoServiceProvider();
                byte[] inputByteArray = Encoding.Default.GetBytes(str);
                des.Key = ASCIIEncoding.UTF8.GetBytes(DES_Key); // 密匙
                des.IV = ASCIIEncoding.UTF8.GetBytes(DES_Key);  // 向量
                MemoryStream ms = new MemoryStream();
                CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write);
                cs.Write(inputByteArray, 0, inputByteArray.Length);
                cs.FlushFinalBlock();
                var result = Convert.ToBase64String(ms.ToArray());
                return result;
            }
    
            /// <summary>
            /// DES解密
            /// </summary>
            /// <param name="str">需要解密的</param>
            /// <returns></returns>
            public static string Decrypt(string str)
            {
                if (string.IsNullOrEmpty(str))
                {
                    return "解密处理失败,解密字符串为空";
                }
                //解密秘钥补位处理
                string encryptKeyall = Convert.ToString(DES_Key);
                if (encryptKeyall.Length < 9)
                {
                    for (; ; )
                    {
                        if (encryptKeyall.Length < 9)
                            encryptKeyall += encryptKeyall;
                        else
                            break;
                    }
                }
                string encryptKey = encryptKeyall.Substring(0, 8);
                DES_Key = encryptKey;
                //解密处理
                DESCryptoServiceProvider des = new DESCryptoServiceProvider();
                byte[] inputByteArray = Convert.FromBase64String(str);
                des.Key = ASCIIEncoding.UTF8.GetBytes(DES_Key);  //秘钥---加密解密秘钥需要一致
                des.IV = ASCIIEncoding.UTF8.GetBytes(DES_Key);   //向量
                MemoryStream ms = new MemoryStream();
                CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write);
                cs.Write(inputByteArray, 0, inputByteArray.Length);
                cs.FlushFinalBlock();
                return System.Text.Encoding.Default.GetString(ms.ToArray());
            }
        }

    方法调用:

    string resultStr = DESEncryptHelper.Encrypt(“123456”);
    string resultStr = DESEncryptHelper.Decrypt(“123456”);
    

    学习:

    DES算法原理:https://blog.csdn.net/qq_27570955/article/details/52442092 

    欢迎相互交流学习!

  • 相关阅读:
    delphi llPDFLib 添加虚线
    delphi使用RichView控件 增大表格字号
    delphi llPDFLib 文档设置
    delphi llPDFLib 添加密码
    狂神说java springboot笔记
    Java 8 Optional 用法
    lambda表达式总结
    【狂神说Java】SpringBoot 聊聊现在和未来
    Springboot整合MyBatis参数传值方式
    JVM类加载器
  • 原文地址:https://www.cnblogs.com/jiayan1578/p/11903789.html
Copyright © 2020-2023  润新知