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

    记录一下

    DES加密

    public static string DESEncrypt(string Data, string key)
            {
                return DESEncrypt(Data, key, "utf-8");
            }
    
    /// <summary>
            /// DES加密算法
            /// </summary>
            /// <param name="Data">加密明文</param>
            /// <param name="key">密钥长度为8个字符</param>
            /// <param name="charset">字符编码</param>
            /// <returns>返回密文</returns>
            public static string DESEncrypt(string Data, string key, string charset)
            {
    
                DESCryptoServiceProvider des = new DESCryptoServiceProvider();
    
                des.Key = ASCIIEncoding.ASCII.GetBytes(key);
                des.IV = ASCIIEncoding.ASCII.GetBytes(key);
    
                byte[] inputByteArray = Encoding.GetEncoding(charset).GetBytes(Data);
    
                System.IO.MemoryStream ms = new System.IO.MemoryStream();
                CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write);
                cs.Write(inputByteArray, 0, inputByteArray.Length);
    
                cs.FlushFinalBlock();
    
                byte[] ret = ms.ToArray();
    
                cs.Close();
                ms.Close();
    
                return BytesToHexString(ret);
            }
    
    
     public static string BytesToHexString(byte[] bytes)
            {
                System.Text.StringBuilder s = new System.Text.StringBuilder();
                foreach (byte b in bytes)
                {
                    s.Append(b.ToString("x2").ToUpper());
                }
                return s.ToString();
            }

    解密:

     public static string DESDecrypt(string Data, string key)
            {
                return DESDecrypt(Data, key, "utf-8");
            }
    
    
            /// <summary>
            /// DES 解密算法
            /// </summary>
            /// <param name="Data">密文</param>
            /// <param name="key">密钥长度为8个字符</param>
            /// <param name="charset">字符编码</param>
            /// <returns>明文</returns>
            public static string DESDecrypt(string Data, string key, string charset)
            {
                DESCryptoServiceProvider des = new DESCryptoServiceProvider();
    
                des.Key = ASCIIEncoding.ASCII.GetBytes(key);
                des.IV = ASCIIEncoding.ASCII.GetBytes(key);
    
                byte[] inputByteArray = HexStringToBytes(Data);
    
                System.IO.MemoryStream ms = new System.IO.MemoryStream();
                CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write);
                cs.Write(inputByteArray, 0, inputByteArray.Length);
                cs.FlushFinalBlock();
    
    
                byte[] ret = ms.ToArray();
    
                cs.Close();
                ms.Close();
    
                return Encoding.GetEncoding(charset).GetString(ret);
            }
    
    
     public static byte[] HexStringToBytes(string hexString)
            {
                if (hexString == null)
                {
                    throw new ArgumentNullException("hexString");
                }
    
                if ((hexString.Length & 1) != 0)
                {
                    throw new ArgumentOutOfRangeException("hexString", hexString, "hexString must contain an even number of characters.");
                }
    
                byte[] result = new byte[hexString.Length / 2];
    
                for (int i = 0; i < hexString.Length; i += 2)
                {
                    result[i / 2] = byte.Parse(hexString.Substring(i, 2), NumberStyles.HexNumber);
                }
    
                return result;
            }
  • 相关阅读:
    再次或多次格式化导致namenode的ClusterID和datanode的ClusterID之间不一致的问题解决办法
    Linux安装aria2
    POJ 3335 Rotating Scoreboard 半平面交
    hdu 1540 Tunnel Warfare 线段树 区间合并
    hdu 3397 Sequence operation 线段树 区间更新 区间合并
    hud 3308 LCIS 线段树 区间合并
    POJ 3667 Hotel 线段树 区间合并
    POJ 2528 Mayor's posters 贴海报 线段树 区间更新
    POJ 2299 Ultra-QuickSort 求逆序数 线段树或树状数组 离散化
    POJ 3468 A Simple Problem with Integers 线段树成段更新
  • 原文地址:https://www.cnblogs.com/Cein/p/8406442.html
Copyright © 2011-2022 走看看