zoukankan      html  css  js  c++  java
  • MD5密钥的加密,解密 生成密钥

    /// <summary>
            /// 加密
            /// </summary>
            /// <param name="toEncrypt">要加密的字符串,即明文</param>
            /// <param name="key">公共密钥</param>
            /// <param name="useHashing">是否使用MD5生成机密秘钥</param>
            /// <returns>加密后的字符串,即密文</returns>
            public static string Encrypt(string toEncrypt, string key, bool useHashing)
            {
                try
                {
                    byte[] keyArray;
                    byte[] toEncryptArray = UTF8Encoding.UTF8.GetBytes(toEncrypt);
    
                    if (useHashing)
                    {
                        MD5CryptoServiceProvider hashmd5 = new MD5CryptoServiceProvider();
                        keyArray = hashmd5.ComputeHash(UTF8Encoding.UTF8.GetBytes(key));
                    }
                    else
                        keyArray = UTF8Encoding.UTF8.GetBytes(key);
    
                    TripleDESCryptoServiceProvider tdes = new TripleDESCryptoServiceProvider();
    
                    tdes.Key = keyArray;
                    tdes.Mode = CipherMode.ECB;
                    tdes.Padding = PaddingMode.PKCS7;
    
                    ICryptoTransform cTransform = tdes.CreateEncryptor();
                    byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
    
                    return Convert.ToBase64String(resultArray, 0, resultArray.Length);
                }
                catch
                {
    
                }
                return string.Empty;
            }
    
            /// <summary>
            /// 解密
            /// </summary>
            /// <param name="toDecrypt">要解密的字符串,即密文</param>
            /// <param name="key">公共密钥</param>
            /// <param name="useHashing">是否使用MD5生成机密密钥</param>
            /// <returns>解密后的字符串,即明文</returns>
            public static string Decrypt(string toDecrypt, string key, bool useHashing)
            {
                try
                {
                    byte[] keyArray;
                    byte[] toEncryptArray = Convert.FromBase64String(toDecrypt);
    
                    if (useHashing)
                    {
                        MD5CryptoServiceProvider hashmd5 = new MD5CryptoServiceProvider();
                        keyArray = hashmd5.ComputeHash(UTF8Encoding.UTF8.GetBytes(key));
                    }
                    else
                        keyArray = UTF8Encoding.UTF8.GetBytes(key);
    
                    TripleDESCryptoServiceProvider tdes = new TripleDESCryptoServiceProvider();
                    tdes.Key = keyArray;
                    tdes.Mode = CipherMode.ECB;
                    tdes.Padding = PaddingMode.PKCS7;
    
                    ICryptoTransform cTransform = tdes.CreateDecryptor();
                    byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
    
                    return UTF8Encoding.UTF8.GetString(resultArray);
    
                }
                catch
                {
    
                }
                return string.Empty;
    
            }
  • 相关阅读:
    [LeetCode] 824. Goat Latin
    [LeetCode] 21. Merge Two Sorted Lists
    [LeetCode] 1021. Remove Outermost Parentheses
    [Note] Clipboard.js 使用
    [LeetCode] 665. Non-decreasing Array
    [LeetCode] 897. Increasing Order Search Tree
    [LeetCode] 136. Single Number
    [LeetCode] 822. Card Flipping Game
    [LeetCode] 922. Sort Array By Parity II
    [LeetCode] 965. Univalued Binary Tree
  • 原文地址:https://www.cnblogs.com/OleRookie/p/5318249.html
Copyright © 2011-2022 走看看