新闻中心

C# 怎么进行 MD5 加密_C# MD5 加密实现教程

2025-11-06
浏览次数:
返回列表
首先使用System.Security.Cryptography.MD5对字符串或文件进行哈希计算,字符串需先转为字节数组,文件则通过FileStream读取,结果均转换为小写十六进制字符串;但MD5存在碰撞风险,不适用于密码存储,推荐改用SHA256或更高安全算法。

c# 怎么进行 md5 加密_c# md5 加密实现教程

在 C# 中实现 MD5 加密非常简单,.NET Framework 和 .NET Core 都提供了内置的加密类来处理哈希算法。MD5 虽然安全性较低,不推荐用于敏感数据(如密码存储),但在校验文件完整性、生成唯一标识等场景中仍被广泛使用。

1. 使用 System.Security.Cryptography.MD5 进行字符串加密

要对字符串进行 MD5 加密,需要将字符串转换为字节数组,然后通过 MD5 类计算哈希值,最后将哈希结果转换为十六进制字符串。

示例代码:

刺鸟创客 刺鸟创客

一款专业高效稳定的AI内容创作平台

刺鸟创客 110 查看详情 刺鸟创客

using System;
using System.Security.Cryptography;
using System.Text;
<p>public static string ComputeMD5(string input)
{
using (MD5 md5 = MD5.Create())
{
byte[] inputBytes = Encoding.UTF8.GetBytes(input);
byte[] hashBytes = md5.ComputeHash(inputBytes);</p><pre class="brush:php;toolbar:false;">    // 将哈希字节数组转换为十六进制字符串
    StringBuilder sb = new StringBuilder();
    for (int i = 0; i < hashBytes.Length; i++)
    {
        sb.Append(hashBytes[i].ToString("x2")); // x2 表示小写十六进制
    }
    return sb.ToString();
}

}

// 使用示例 string source = "Hello, World!"; string md5Hash = ComputeMD5(source); Console.WriteLine($"MD5 哈希值: {md5Hash}");

2. 对文件进行 MD5 校验

除了字符串,还可以对整个文件内容进行 MD5 计算,常用于验证文件是否被修改或下载完整。

示例代码:

using System;
using System.IO;
using System.Security.Cryptography;
using System.Text;
<p>public static string ComputeFileMD5(string filePath)
{
if (!File.Exists(filePath))
throw new FileNotFoundException("文件未找到", filePath);</p><pre class="brush:php;toolbar:false;">using (MD5 md5 = MD5.Create())
using (FileStream stream = File.OpenRead(filePath))
{
    byte[] hashBytes = md5.ComputeHash(stream);
    StringBuilder sb = new StringBuilder();
    for (int i = 0; i < hashBytes.Length; i++)
    {
        sb.Append(hashBytes[i].ToString("x2"));
    }
    return sb.ToString();
}

}

// 使用示例 try { string fileHash = ComputeFileMD5(@"C:\example.txt"); Console.WriteLine($"文件 MD5: {fileHash}"); } catch (Exception ex) { Console.WriteLine($"错误: {ex.Message}"); }

3. 注意事项与安全建议

尽管 MD5 实现简单、速度快,但存在严重安全问题:

  • 碰撞攻击:不同内容可能产生相同的 MD5 值,已被证明不安全。
  • 不适合密码存储:应使用 bcryptscryptPBKDF2 等专用算法。
  • 推荐替代方案:如需更安全的哈希,可使用 SHA256 或 SHA512。

提示:若需更高安全性,可替换 MD5 为 SHA256:

using (SHA256 sha256 = SHA256.Create())
{
    byte[] hash = sha256.ComputeHash(Encoding.UTF8.GetBytes(input));
    // 同样转为十六进制
}

基本上就这些。C# 的加密类设计统一,掌握 MD5 后很容易扩展到其他哈希或加密算法。

以上就是C# 怎么进行 MD5 加密_C# MD5 加密实现教程的详细内容,更多请关注其它相关文章!


# 但在  # 网站推广的预算  # 店铺的营销和推广  # 大同互联网关键词排名  # 如何打造区块链网站建设  # 广告营销推广语录大全  # 酒店网站建设视频教程  # 零距离seo广告  # 宿迁seo推广外包公司  # 网站推广有哪些方式好点  # 服务好网站推广与优化  # 中文网  # 相关文章  # 很容易  # c#  # 已被  # 抽象类  # 如何使用  # 信号量  # 转换为  # crypto  # .net  # 敏感数据  # stream  # 字节  # app  # md5加密 


相关栏目: 【 科技资讯46185 】 【 网络学院92790


相关推荐: 最新韩小圈网页版登录入口_官网在线观看官方链接  Angular中单选按钮的正确使用与常见陷阱解析  zookeeper 都有哪些功能?  可靠CSGO开箱平台解析 CSGO开箱网合集  2026春节假期时间安排 2026春节假日查询  机构:以往存储涨价周期小米利润率实际上有所改善 能转嫁给消费者等  虫虫漫画精品漫画官网_虫虫漫画精品漫画官网进入精品漫画  Win11怎么开启高性能模式_Windows 11电源计划优化设置  Node.js CSV 数据处理:基于字段值条件过滤整条记录的策略  Safari自带网页翻译功能怎么用 无需插件轻松看懂外文网站【方法】  离线运行Go语言之旅:本地部署与GOPATH配置指南  ExcelARRAYTOTEXT函数怎么自定义分隔符输出数组文本_ARRAYTOTEXT实现动态生成SQL语句  为什么我的微信朋友圈看不到别人的更新_微信朋友圈更新显示异常解决方法  Go语言中的*string:深入理解字符串指针  Log4j Console Appender性能瓶颈与高并发优化策略  蛙漫限时开放最深处链接_蛙漫全站漫画会员同款秒开地址  使用 Pandas 高效处理 .dat 文件:字符清理与数据计算  QQ邮箱网页版登录入口 QQ邮箱官方在线使用平台  神经网络二分类模型训练异常:高损失与完美验证准确率的排查与修正  Promise错误处理:在catch后终止链式then执行的策略  怎么去除衣服上的口红印_生活小妙招教你用酒精轻松擦除  126邮箱网页版官方入口 126邮箱账号在线登录平台  SteamMachine定价或为699美元 大家想入手吗?  支付宝如何设置安全保护_支付宝安全设置的全面教程  打开就能玩的植物大战僵尸 植物大战僵尸网页版传送门  Composer如何解决json扩展缺失的错误  c++ 命名空间怎么用 c++ namespace使用指南  sublime侧边栏怎么增强功能_SideBarEnhancements for sublime安装与配置  中兴BladeV30怎样用测距估书架层高_iPhone中兴BladeV30测距估书架层高【家装参考】  蛙漫2台版漫画地址 Manwa2正版网页版链接  文心一言怎样用批量生成做多版文案_文心一言用批量生成做多版文案【批量创作】  win11开机启动修复循环怎么办 Win11无法进入系统高级启动解决方法【修复】  Selenium Python中处理点击后新窗口加载冻结问题的策略与实践  解决Python logging 中 datefmt 导致时间戳固定不变的问题  冬*霸灯泡不亮怎么办_浴霸取暖灯一盏不亮的灯座清洁修复法  抖音未来赚钱的新趋势 2025年值得关注的变现风口分析  抖音网页版平台入口 抖音网页版官网在线访问教程  ArrayList与LinkedList核心操作的Big-O复杂度分析  steam官方入口大全 steam账号注册及操作指南  知音漫客官网漫画下载_知音漫客网页版阅读记录  MAC怎么让Dock栏只显示当前运行的应用_MAC终端命令实现极简Dock栏  机器学习中对数变换预测结果的反向还原  vivo手机参数配置怎么增强信号_vivo手机参数配置信号增强方法  京东单号查询入口_京东快递订单追踪入口  谷歌浏览器无痕模式怎么开 Chrome开启无痕浏览设置方法【教程】  C++20的source_location是什么_C++在编译期获取源码位置信息用于日志和断言  Pandas DataFrame:高效添加条件计算列  凉拌黄瓜怎么拌更入味 凉拌黄瓜简单家常做法  海棠电脑版入口_通过电脑访问海棠官网阅读  QQ邮箱电脑版登录入口_QQ邮箱官方网站登录平台 

搜索