zoukankan      html  css  js  c++  java
  • [C#]加密解密 MD5、AES

    /// <summary>
    /// MD5函数
    /// </summary>
    /// <param name="str">原始字符串</param>
    /// <returns>MD5结果</returns>
    public static string MD5(string str)
    {
        byte[] b = Encoding.UTF8.GetBytes(str);
        b = new MD5CryptoServiceProvider().ComputeHash(b);
        string ret = string.Empty;
        for (int i = 0; i < b.Length; i++)
        {
            ret += b[i].ToString("x").PadLeft(2, '0');
        }
        return ret;
    }
    
    /// <summary>
    /// AES加密
    /// </summary>
    /// <param name="toEncrypt"></param>
    /// <returns></returns>
    public static string AesEncrypt(string toEncrypt)
    {
        if (string.IsNullOrEmpty(toEncrypt))
        {
            return string.Empty;
        }
        try
        {
            byte[] keyArray = Encoding.UTF8.GetBytes(@"16位");
    
            byte[] toEncryptArray = Encoding.UTF8.GetBytes(toEncrypt);
    
            RijndaelManaged rDel = new RijndaelManaged();
            rDel.Key = keyArray;
            rDel.Mode = CipherMode.ECB;
            rDel.Padding = PaddingMode.PKCS7;
    
            ICryptoTransform cTransform = rDel.CreateEncryptor();
            byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
    
            return Convert.ToBase64String(resultArray, 0, resultArray.Length);
        }
        catch
        {
            return string.Empty;
        }
    }
    
    /// <summary>
    /// AES解密
    /// </summary>
    /// <param name="toDecrypt"></param>
    /// <returns></returns>
    public static string AesDecrypt(string toDecrypt)
    {
        if (string.IsNullOrEmpty(toDecrypt))
        {
            return string.Empty;
        }
        try
        {
    
            byte[] keyArray = Encoding.UTF8.GetBytes(@"16位");
    
            byte[] toEncryptArray = Convert.FromBase64String(toDecrypt);
    
            RijndaelManaged rDel = new RijndaelManaged();
            rDel.Key = keyArray;
            rDel.Mode = CipherMode.ECB;
            rDel.Padding = PaddingMode.PKCS7;
    
    
            ICryptoTransform cTransform = rDel.CreateDecryptor();
            byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
    
            return UTF8Encoding.UTF8.GetString(resultArray);
        }
        catch
        {
            return string.Empty;
        }
    }
    // AES 加密
    private byte[] AESEncrypt(string text)
    {
        string Key = "123456";
        var IV = Encoding.Default.GetBytes(Key);
        byte[] data = Encoding.Default.GetBytes(text);
        SymmetricAlgorithm aes = Rijndael.Create();
        aes.Key = IV;
        aes.IV = IV;
        aes.Mode = CipherMode.CBC;
        aes.Padding = PaddingMode.PKCS7;
        var encryptor = aes.CreateEncryptor();
    
        using (MemoryStream ms = new MemoryStream())
        {
            using (CryptoStream cs = new CryptoStream(ms, encryptor, CryptoStreamMode.Write))
            {
                cs.Write(data, 0, data.Length);
                cs.FlushFinalBlock();
                byte[] cipherBytes = ms.ToArray(); // 得到加密后的字节数组
                cs.Close();
                ms.Close();
                aes.Clear();
                return cipherBytes;
            }
        }
    }
    
    // AES 解密
    public string AESDecrypt(byte[] data)
    {
        string Key = "123456";
        var IV = Encoding.Default.GetBytes(Key);
        SymmetricAlgorithm aes = Rijndael.Create();
        aes.Key = IV;
        aes.IV = IV;
        aes.Mode = CipherMode.CBC;
        aes.Padding = PaddingMode.PKCS7;
        var encryptor = aes.CreateDecryptor();
    
        byte[] decryptBytes = new byte[data.Length];
        using (MemoryStream ms = new MemoryStream(data))
        {
            using (CryptoStream cs = new CryptoStream(ms, encryptor, CryptoStreamMode.Read))
            {
                cs.Read(decryptBytes, 0, decryptBytes.Length);
                cs.Close();
                ms.Close();
            }
        }
        aes.Clear();
        return Encoding.Default.GetString(decryptBytes).Replace("", " ");
    }
  • 相关阅读:
    charles修改响应体
    charles重发网络请求&模拟慢速网络&过滤网络请求
    charles修改请求体内容
    monkeyrunner环境搭建以及实例(转)
    django模型中的抽象类(abstract)
    Linux启动/停止/重启Mysql数据库的方法
    ava.net.SocketException: Unrecognized Windows Sockets error: 0: JVM_Bind (解决思路)
    unix PS命令和JPS命令的区别
    mysql:表注释和字段注释
    mysql-关于Unix时间戳(unix_timestamp)
  • 原文地址:https://www.cnblogs.com/z5337/p/11155137.html
Copyright © 2011-2022 走看看