ASP.NET如何实现DES和MD5加密帮助类 | NET加密解密代码

using System;
using System.IO;
using System.Security.Cryptography;
using System.Text;
public static class EncryptHelper
{
    // 默认DES密钥和IV(8字节长度)
    private static readonly string DefaultDESKey = "ABCDEFGH"; // 8字符
    private static readonly string DefaultDESIV = "12345678";  // 8字符
    /// <summary>
    /// DES加密(使用默认密钥)
    /// </summary>
    public static string DESEncrypt(string plainText)
    {
        return DESEncrypt(plainText, DefaultDESKey, DefaultDESIV);
    }
    /// <summary>
    /// DES加密(自定义密钥和IV)
    /// </summary>
    public static string DESEncrypt(string plainText, string key, string iv)
    {
        if (string.IsNullOrEmpty(plainText)) return null;
        using (DESCryptoServiceProvider des = new DESCryptoServiceProvider())
        {
            byte[] inputBytes = Encoding.UTF8.GetBytes(plainText);
            des.Key = Encoding.ASCII.GetBytes(key);
            des.IV = Encoding.ASCII.GetBytes(iv);
            using (MemoryStream ms = new MemoryStream())
            {
                using (CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write))
                {
                    cs.Write(inputBytes, 0, inputBytes.Length);
                    cs.FlushFinalBlock();
                }
                return Convert.ToBase64String(ms.ToArray());
            }
        }
    }
    /// <summary>
    /// DES解密(使用默认密钥)
    /// </summary>
    public static string DESDecrypt(string cipherText)
    {
        return DESDecrypt(cipherText, DefaultDESKey, DefaultDESIV);
    }
    /// <summary>
    /// DES解密(自定义密钥和IV)
    /// </summary>
    public static string DESDecrypt(string cipherText, string key, string iv)
    {
        if (string.IsNullOrEmpty(cipherText)) return null;
        using (DESCryptoServiceProvider des = new DESCryptoServiceProvider())
        {
            byte[] inputBytes = Convert.FromBase64String(cipherText);
            des.Key = Encoding.ASCII.GetBytes(key);
            des.IV = Encoding.ASCII.GetBytes(iv);
            using (MemoryStream ms = new MemoryStream())
            {
                using (CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write))
                {
                    cs.Write(inputBytes, 0, inputBytes.Length);
                    cs.FlushFinalBlock();
                }
                return Encoding.UTF8.GetString(ms.ToArray());
            }
        }
    }
    /// <summary>
    /// MD5加密(32位大写)
    /// </summary>
    public static string MD5Encrypt(string input)
    {
        if (string.IsNullOrEmpty(input)) return null;
        using (MD5 md5 = MD5.Create())
        {
            byte[] inputBytes = Encoding.UTF8.GetBytes(input);
            byte[] hashBytes = md5.ComputeHash(inputBytes);
            StringBuilder sb = new StringBuilder();
            for (int i = 0; i < hashBytes.Length; i++)
            {
                sb.Append(hashBytes[i].ToString("X2")); // 转换为大写十六进制
            }
            return sb.ToString();
        }
    }
}

使用示例:

// DES加密解密
string original = "Hello, World!";
string encrypted = EncryptHelper.DESEncrypt(original);
string decrypted = EncryptHelper.DESDecrypt(encrypted);
Console.WriteLine($"原始: {original}");
Console.WriteLine($"加密: {encrypted}");
Console.WriteLine($"解密: {decrypted}");
// MD5加密
string input = "password123";
string md5Hash = EncryptHelper.MD5Encrypt(input);
Console.WriteLine($"MD5哈希: {md5Hash}"); // 输出32位大写MD5

关键点说明:

  1. DES加密/解密

    ASP.NET中DES加密与解密MD5加密帮助类的实现代码

    • 使用DESCryptoServiceProvider实现
    • 支持自定义密钥和IV(必须为8字节)
    • 默认使用Base64编码输出
    • 采用UTF-8编码处理文本
  2. MD5加密

    • 生成32位大写十六进制哈希值
    • 不可逆加密(常用于密码存储)
    • 使用MD5.Create()创建实例
  3. 注意事项

    ASP.NET中DES加密与解密MD5加密帮助类的实现代码

    • 密钥安全:实际项目中不要使用硬编码密钥,应从安全配置读取
    • DES安全性:DES已被认为不够安全,建议生产环境使用AES
    • IV使用:每次加密应使用不同IV增强安全性(示例为演示固定IV)
    • MD5局限:MD5存在碰撞漏洞,重要场景建议使用SHA256

增强建议:

// 随机生成IV的增强版DES加密
public static (string Result, string IV) DESEncryptWithRandomIV(string plainText, string key)
{
    using (DESCryptoServiceProvider des = new DESCryptoServiceProvider())
    {
        des.GenerateIV(); // 自动生成随机IV
        byte[] iv = des.IV;
        // ...加密逻辑...
        return (cipherText, Convert.ToBase64String(iv));
    }
}

提示:在.NET Core中建议使用Aes代替DES,使用System.Security.Cryptography.MD5时需注意平台兼容性。

图片来源于AI模型,如侵权请联系管理员。作者:酷小编,如若转载,请注明出处:https://www.kufanyun.com/ask/289206.html

(0)
上一篇 2026年2月9日 08:26
下一篇 2026年2月9日 08:33

相关推荐

  • 光泽县智慧停车路面管理人员做什么?智慧停车路面管理人员岗位职责

    2026 年光泽县智慧停车路面管理人员的核心职责已从传统“看车收费”全面转型为“数据运维与秩序调度”,其工作重心在于通过智能终端实时处理违停预警、动态调整泊位价格及保障系统数据准确率,以响应“光泽县智慧停车路面管理人员”这一岗位在数字化治理中的关键需求,岗位职能重塑:从“人海战术”到“数据驱动”在 2026 年……

    2026年5月9日
    0183
  • 光存储最新技术是什么?光存储技术发展前景如何

    2026 年光存储技术已突破单盘 500TB 容量瓶颈,凭借 100 年寿命与零能耗特性,成为数据中心冷数据归档与国家级战略备份的首选方案,随着全球数据总量在 2026 年突破 175ZB,传统磁存储与闪存方案在能耗、寿命及长期成本上遭遇严峻挑战,光存储技术,特别是全息存储与五维光存储,已从实验室走向规模化商用……

    2026年5月11日
    0183
  • 如何实现Asp.net网页文字水印?常见方法与代码示例详解

    在信息化快速发展的今天,文档作为企业信息资产的核心载体,其安全性备受关注,文字水印作为文档保护的有效手段之一,能够通过在文档中嵌入不可见或半透明的文字信息(如“内部使用”“版权所有”等),实现对文档来源、时间、权限的标识,从而增强文档防篡改与溯源能力,在Asp.net框架下开发的企业级应用中,文字水印技术的应用……

    2026年1月26日
    01050
    • 服务器间歇性无响应是什么原因?如何排查解决?

      根源分析、排查逻辑与解决方案服务器间歇性无响应是IT运维中常见的复杂问题,指服务器在特定场景下(如高并发时段、特定操作触发时)出现短暂无响应、延迟或服务中断,而非持续性的宕机,这类问题对业务连续性、用户体验和系统稳定性构成直接威胁,需结合多维度因素深入排查与解决,常见原因分析:从硬件到软件的多维溯源服务器间歇性……

      2026年1月10日
      020
  • 公众号服务号一天能发几条消息?服务号推送次数限制是多少

    公众号服务号一天能发几条消息核心结论:微信公众号服务号每日仅能推送 1 条消息,每月累计 4 条,这是微信官方设定的硬性规则,任何试图突破此限制的技术手段均存在封号风险,通过优化内容质量、利用模板消息、开发自定义菜单及结合云通讯工具(如酷番云)构建自动化营销闭环,企业完全可以在有限的推送频次下实现用户触达效率的……

    2026年4月19日
    01023

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注