• Md5加密秘钥加密哈希加密


    加密通用类:

        public class EncryptClass
        {
            /// <summary>
            /// 返回MD5加密字符串
            /// </summary>
            /// <param name="EncString"></param>
            /// <returns></returns>
            public static string GetMd5String(string EncString)
            {
                return FormsAuthentication.HashPasswordForStoringInConfigFile(EncString + "Hello CSH", "md5");
            }
    
            // using System.Security.Cryptography;  
            public static string GetMd5Hash(String input)
            {
                if (input == null)
                {
                    return null;
                }
    
                MD5 md5Hash = MD5.Create();
    
                // 将输入字符串转换为字节数组并计算哈希数据  
                byte[] data = md5Hash.ComputeHash(Encoding.UTF8.GetBytes(input));
    
                // 创建一个 Stringbuilder 来收集字节并创建字符串  
                StringBuilder sBuilder = new StringBuilder();
    
                // 循环遍历哈希数据的每一个字节并格式化为十六进制字符串  
                for (int i = 0; i < data.Length; i++)
                {
                    sBuilder.Append(data[i].ToString("x2"));
                }
    
                // 返回十六进制字符串  
                return sBuilder.ToString();
            }
    
            #region 密钥加密解密
            //方法 
            //加密方法 
            public static string Encrypt(string pToEncrypt, string sKey)
            {
                DESCryptoServiceProvider des = new DESCryptoServiceProvider();
                //把字符串放到byte数组中 
                //原来使用的UTF8编码,我改成Unicode编码了,不行 
                byte[] inputByteArray = Encoding.Default.GetBytes(pToEncrypt);
                //byte[] inputByteArray=Encoding.Unicode.GetBytes(pToEncrypt); 
    
                //建立加密对象的密钥和偏移量 
                //原文使用ASCIIEncoding.ASCII方法的GetBytes方法 
                //使得输入密码必须输入英文文本 
                des.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
                des.IV = ASCIIEncoding.ASCII.GetBytes(sKey);
                MemoryStream ms = new MemoryStream();
                CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write);
                //Write the byte array into the crypto stream 
                //(It will end up in the memory stream) 
                cs.Write(inputByteArray, 0, inputByteArray.Length);
                cs.FlushFinalBlock();
                //Get the data back from the memory stream, and into a string 
                StringBuilder ret = new StringBuilder();
                foreach (byte b in ms.ToArray())
                {
                    //Format as hex 
                    ret.AppendFormat("{0:X2}", b);
                }
                ret.ToString();
                return ret.ToString();
            }
    
            //解密方法 
            public static string Decrypt(string pToDecrypt, string sKey)
            {
                DESCryptoServiceProvider des = new DESCryptoServiceProvider();
    
                //Put the input string into the byte array 
                byte[] inputByteArray = new byte[pToDecrypt.Length / 2];
                for (int x = 0; x < pToDecrypt.Length / 2; x++)
                {
                    int i = (Convert.ToInt32(pToDecrypt.Substring(x * 2, 2), 16));
                    inputByteArray[x] = (byte)i;
                }
    
                //建立加密对象的密钥和偏移量,此值重要,不能修改 
                des.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
                des.IV = ASCIIEncoding.ASCII.GetBytes(sKey);
                MemoryStream ms = new MemoryStream();
                CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write);
                //Flush the data through the crypto stream into the memory stream 
                cs.Write(inputByteArray, 0, inputByteArray.Length);
                cs.FlushFinalBlock();
    
                //Get the decrypted data back from the memory stream 
                //建立StringBuild对象,CreateDecrypt使用的是流对象,必须把解密后的文本变成流对象 
                StringBuilder ret = new StringBuilder();
    
                return System.Text.Encoding.Default.GetString(ms.ToArray());
            }
    
    
    
    
            #endregion
        }

    其中:

    Encrypt和Decrypt  加密算法指定键的大小对于此算法无效:是因为key值必须是8位64个字节,因此在输入时给予控制,注意key为Encoding.UTF8  必须输入8位秘钥否则报错
  • 相关阅读:
    词法定界
    Lua 多维表的遍历中的赋值
    mac虚拟机parallels 无法启动 "Windows 7" 虚拟机
    MAC下Android的Eclipse开发环境的搭建
    Lua 的函数库 01
    mac 安装lua并配置Subline Text2 的lua开发环境
    Sublime Text2 注册码 汉化 配置lua开发环境
    js 月历 时间函数 月份第一天 星期的判断
    android 判断app是否处于前台
    android 更新下载apk
  • 原文地址:https://www.cnblogs.com/CallmeYhz/p/7243559.html
Copyright © 2020-2023  润新知