zoukankan      html  css  js  c++  java
  • MD5加密

    public static string UserMd5(string str)
            {
                string cl = str;
                string pwd = "";
                MD5 md5 = MD5.Create();//实例化一个md5对像
                // 加密后是一个字节类型的数组,这里要注意编码UTF8/Unicode等的选择 
                byte[] s = md5.ComputeHash(Encoding.UTF8.GetBytes(cl));
                // 通过使用循环,将字节类型的数组转换为字符串,此字符串是常规字符格式化所得
                for (int i = 0; i < s.Length; i++)
                {
                    // 将得到的字符串使用十六进制类型格式。格式后的字符是小写的字母,如果使用大写(X)则格式后的字符是大写字符 
                    pwd = pwd + s[i].ToString("X2");
    
                }
                return pwd;
            }

    另外

     public static string MD5_encrypt(string encryptString)
            {
    
                byte[] result = Encoding.UTF8.GetBytes(encryptString);
    
                MD5 md5 = new MD5CryptoServiceProvider();
    
                byte[] output = md5.ComputeHash(result);
    
                string encryptResult = BitConverter.ToString(output).Replace("-", "");
    
                return encryptResult;
    
            }
    

     之前用过

    #region MD5加密/解密操作
            private static string m_DesKey = "XYKJ4321";
            /// <summary>
            /// 对指定的字符串进行MD5加密。
            /// </summary>
            /// <param name="p_OrginString">要加密的字符串。</param>
            /// <param name="p_DesKey">密钥</param>
            /// <returns>加密后的字符串</returns>
            public static string EncryptMD5(string p_OrginString, string p_DesKey)
            {
                using (DESCryptoServiceProvider des = new DESCryptoServiceProvider())
                {
                    byte[] inputByteArray = Encoding.UTF8.GetBytes(p_OrginString);
                    des.Key = ASCIIEncoding.ASCII.GetBytes(p_DesKey);
                    des.IV = ASCIIEncoding.ASCII.GetBytes(p_DesKey);
                    System.IO.MemoryStream ms = new System.IO.MemoryStream();
                    using (CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write))
                    {
                        cs.Write(inputByteArray, 0, inputByteArray.Length);
                        cs.FlushFinalBlock();
                        cs.Close();
                    }
                    string str = Convert.ToBase64String(ms.ToArray());
                    ms.Close();
                    return str;
                }
    
            }
            /// <summary>
            /// 对指定的字符串使用默认的密钥进行MD5加密。
            /// </summary>
            /// <param name="p_OrginString">要加密的字符串。</param>
            /// <returns>加密后的字符串</returns>
            public static string EncryptMD5(string p_OrginString)
            {
                return EncryptMD5(p_OrginString, m_DesKey);
            }
            /// <summary>
            /// 对MD5加密的字符串进行解密。
            /// </summary>
            /// <param name="p_EncryptString">要解密的的字符串</param>
            /// <param name="p_DesKey">密钥</param>
            /// <returns>已解密的字符串。</returns>
            public static string DecryptMD5(string p_EncryptString, string p_DesKey)
            {
                if (p_EncryptString.Length == 0)
                    return "";
                byte[] inputByteArray;
                try
                {
                    inputByteArray = Convert.FromBase64String(p_EncryptString);
                    using (DESCryptoServiceProvider des = new DESCryptoServiceProvider())
                    {
                        des.Key = ASCIIEncoding.ASCII.GetBytes(p_DesKey);
                        des.IV = ASCIIEncoding.ASCII.GetBytes(p_DesKey);
                        System.IO.MemoryStream ms = new System.IO.MemoryStream();
                        using (CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write))
                        {
                            cs.Write(inputByteArray, 0, inputByteArray.Length);
                            cs.FlushFinalBlock();
                            cs.Close();
                        }
                        string str = Encoding.UTF8.GetString(ms.ToArray());
                        ms.Close();
                        return str;
                    }
                }
                catch
                {
                    return "";
                }
            }
            /// <summary>
            /// 对MD5加密的字符串使用默认的密匙进行解密。
            /// </summary>
            /// <param name="p_EncryptString">要解密的的字符串</param>
            /// <returns>已解密的字符串。</returns>
            public static string DecryptMD5(string p_EncryptString)
            {
                return DecryptMD5(p_EncryptString, m_DesKey);
            }
            /// <summary>
            /// 计算字符串或者文件MD5值
            /// </summary>
            /// <param name="str">需要计算的字符串或文件路径</param>
            /// <param name="isStr">true为字符串,false为文件</param>
            /// <returns>MD5值</returns>
            public static string GetMD5Value(String str, Boolean isStr)
            {
                MD5 md5 = new MD5CryptoServiceProvider();
                byte[] md5ch;
                if (isStr)
                {
                    byte[] ch = System.Text.Encoding.Default.GetBytes(str);
                    md5ch = md5.ComputeHash(ch);
                }
                else
                {
                    if (!File.Exists(str))
                        return string.Empty;
                    FileStream fs = new FileStream(str, FileMode.Open, FileAccess.Read);
                    md5ch = md5.ComputeHash(fs);
                    fs.Close();
                }
                md5.Clear();
                string strMd5 = "";
                for (int i = 0; i < md5ch.Length - 1; i++)
                {
                    strMd5 += md5ch[i].ToString("x").PadLeft(2, '0');
                }
                return strMd5;
            }
            /// <summary>
            /// 计算字节数组的MD5
            /// </summary>
            /// <param name="p_Bytes">字节数组</param>
            /// <returns>md5值</returns>
            public static string GetMD5Value(byte[] p_Bytes)
            {
                MD5 md5 = new MD5CryptoServiceProvider();
                byte[] md5ch = md5.ComputeHash(p_Bytes);
                md5.Clear();
                string strMd5 = "";
                for (int i = 0; i < md5ch.Length - 1; i++)
                {
                    strMd5 += md5ch[i].ToString("x").PadLeft(2, '0');
                }
                return strMd5;
            }
            #endregion
    

     AES加密

    /// <summary>
        /// ASE加解密
        /// </summary>
        public class AESHelper
        {
            static string _Key;
            /// <summary>
            /// 获取密钥
            /// </summary>
            public static string Key
            {
                get
                {
                    return _Key;    ////必须是16位
                }
                set
                {
                    _Key = value;
                }
            }
            //默认密钥向量 
            private static byte[] _key1 = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF, 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF };
            /// <summary>
            /// AES加密算法
            /// </summary>
            /// <param name="plainText">明文字符串</param>
            /// <returns>将加密后的密文转换为Base64编码,以便显示</returns>
            public static string AESEncrypt(string plainText)
            {
                //分组加密算法
                SymmetricAlgorithm des = Rijndael.Create();
                byte[] inputByteArray = Encoding.UTF8.GetBytes(plainText);//得到需要加密的字节数组 
                //设置密钥及密钥向量
                des.Key = Encoding.UTF8.GetBytes(Key);
                des.IV = _key1;
                byte[] cipherBytes = null;
                using (MemoryStream ms = new MemoryStream())
                {
                    using (CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write))
                    {
                        cs.Write(inputByteArray, 0, inputByteArray.Length);
                        cs.FlushFinalBlock();
                        cipherBytes = ms.ToArray();//得到加密后的字节数组
                        cs.Close();
                        ms.Close();
                    }
                }
                return Convert.ToBase64String(cipherBytes);
            }
            /// <summary>
            /// AES解密
            /// </summary>
            /// <param name="cipherText">密文字符串</param>
            /// <returns>返回解密后的明文字符串</returns>
            public static string AESDecrypt(string showText)
            {
                byte[] cipherText = Convert.FromBase64String(showText);
                SymmetricAlgorithm des = Rijndael.Create();
                des.Key = Encoding.UTF8.GetBytes(Key);
                des.IV = _key1;
                byte[] decryptBytes = new byte[cipherText.Length];
                using (MemoryStream ms = new MemoryStream(cipherText))
                {
                    using (CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Read))
                    {
                        cs.Read(decryptBytes, 0, decryptBytes.Length);
                        cs.Close();
                        ms.Close();
                    }
                }
                return Encoding.UTF8.GetString(decryptBytes).Replace("", "");   ///将字符串后尾的''去掉
            }
        }
  • 相关阅读:
    ndk与jni学习
    2021杭电多校第十场题解
    2021杭电多校第九场题解
    2021杭电多校第八场题解
    2021杭电多校第七场题解
    2021杭电多校第六场题解
    2021杭电多校第四场题解
    2021杭电多校第五场题解
    2021杭电多校第三场题解
    2021杭电多校第二场题解
  • 原文地址:https://www.cnblogs.com/songyulan/p/7154179.html
Copyright © 2011-2022 走看看