随笔 - 750  文章 - 1  评论 - 107  阅读 - 34万

[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("\0", " ");
}
复制代码

 

posted on   z5337  阅读(352)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示