C# 哈希值计算:MD5/SHA256 加密

简介: 本示例展示了C#中使用MD5和SHA256算法生成哈希值的方法,适用于密码加密与数据校验。MD5安全性较低,建议仅用于非敏感场景;密码存储推荐使用SHA256配合盐值以增强安全性。

哈希算法用于将数据转换为固定长度的哈希值(不可逆),常用于密码存储、文件校验。
using System.Security.Cryptography;
using System.Text;

public class HashHelper
{
// 计算MD5哈希值(32位小写)
public static string ComputeMD5(string input)
{
if (string.IsNullOrEmpty(input)) return "";
using (MD5 md5 = MD5.Create())
{
byte[] inputBytes = Encoding.UTF8.GetBytes(input);
byte[] hashBytes = md5.ComputeHash(inputBytes);
// 转换为16进制字符串
StringBuilder sb = new StringBuilder();
foreach (byte b in hashBytes)
{
sb.Append(b.ToString("x2"));
}
return sb.ToString();
}
}

// 计算SHA256哈希值(64位小写)
public static string ComputeSHA256(string input)
{
    if (string.IsNullOrEmpty(input)) return "";
    using (SHA256 sha256 = SHA256.Create())
    {
        byte[] inputBytes = Encoding.UTF8.GetBytes(input);
        byte[] hashBytes = sha256.ComputeHash(inputBytes);
        StringBuilder sb = new StringBuilder();
        foreach (byte b in hashBytes)
        {
            sb.Append(b.ToString("x2"));
        }
        return sb.ToString();
    }
}

}

// 调用示例
string password = "123456";
string md5Hash = HashHelper.ComputeMD5(password);
string sha256Hash = HashHelper.ComputeSHA256(password);

Console.WriteLine($"密码:{password}");
Console.WriteLine($"MD5哈希(32位):{md5Hash}");
Console.WriteLine($"SHA256哈希(64位):{sha256Hash}");
// 输出:
// 密码:123456
// MD5哈希(32位):e10adc3949ba59abbe56e057f20f883e
// SHA256哈希(64位):8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92
注意:MD5 安全性较低,建议用于非敏感数据校验;密码存储建议使用 SHA256 + 盐值(Salt)。

相关文章
|
5月前
|
算法 C#
C# 实现字符串相似度计算(Levenshtein 算法)
介绍计算字符串编辑距离的算法,基于Levenshtein距离实现相似度分析,适用于搜索建议与拼写纠错,附C#代码示例。
|
5月前
|
JSON C# 数据格式
C# 实现简单的 HTTP 请求工具(POST 补充)
该代码实现了一个基于 HttpClient 的异步 HTTP POST 请求工具类,支持以 JSON 格式提交数据并反序列化响应结果,具备异常处理机制,适用于 .NET 环境下的轻量级网络请求操作。
|
5月前
|
C#
C# 实现简单的定时任务工具
基于 `System.Timers.Timer` 实现定时任务,支持周期性与单次执行。通过封装 Timer 类,提供启动、停止功能,并包含异常处理,确保任务稳定运行,适用于后台定时操作场景。
|
5月前
|
JSON C# 数据格式
C# JSON 序列化与反序列化:Newtonsoft.Json 用法
JSON是前后端交互常用格式,Newtonsoft.Json(Json.NET)是C#中最流行的JSON处理库。本文介绍如何使用它实现对象与JSON字符串的序列化和反序列化,并提供封装工具类及调用示例,便于在项目中快速集成与使用。
|
1月前
|
人工智能 搜索推荐 程序员
豆包收费68到500,Codex收入7天翻倍,免费AI到头了
上个月翻信用卡账单,发现一个事。 AI相关的月订阅已经悄悄超过2000块了。 Claude,Chatgpt,Gemini,GLM,Minimax,即梦,挨个看了一遍,一个都舍不得停。 每一个都在某个工作流里,真离不开。 我以前觉得AI工具会越来越便宜,最终走向免费。 直到这周看到了两条消息。 ## 企业端在掏真金白银了 OpenAI发了条战报。 GPT-5.5发布一周,A
|
2月前
|
Web App开发 监控 安全
域名拦截检测攻略:早排查早规避,守住业务流量与收益【域名安全指南】
本文围绕域名拦截检测展开,核心介绍域名拦截的 4 类常见类型(安全软件 / 浏览器、社交平台、DNS / 解析、运营商 / 地区拦截)、2 类实用检测方法(命令行检测、人工验证)、6 类拦截原因及 4 步快速解除方案,强调建立 “定期检测 + 应急处理” 机制的重要性,同时为缺乏备案资源、频繁被拦截的运营者提供二级域名租用解决方案,帮助运营者提前规避拦截风险,减少流量与业务损失。
|
5月前
|
安全 C# 数据安全/隐私保护
C# 实现验证码 + 登录的整合案例
整合图形验证码与用户登录功能,实现安全的登录验证流程。系统生成验证码图片并校验输入,结合用户名密码双重验证,提升账户安全性,有效防止自动化攻击。
|
9月前
|
人工智能 运维 中间件
CTI中间件:现代呼叫中心的核心开发平台
乐科CTI中间件助力企业高效构建智能呼叫中心,集成通信与业务系统,支持多协议、AI融合、高可用部署,广泛应用于客服、营销等场景,降低开发成本,提升运维效率。
|
存储 缓存 数据库连接
Entity Framework Core 跨数据库查询超厉害!多数据库连接最佳实践,让你的开发更高效!
【8月更文挑战第31天】在现代软件开发中,跨数据库查询是常见需求。Entity Framework Core(EF Core)作为强大的ORM框架,支持多种方法实现这一功能。本文介绍了在EF Core中进行跨数据库查询的最佳实践,包括:理解数据库上下文、使用多个上下文进行查询、处理数据库连接与事务,以及性能优化策略。通过创建独立的数据库上下文如`UserContext`和`OrderContext`,并在业务逻辑中同时使用它们,可以轻松实现跨库查询。此外,利用`TransactionScope`可确保事务一致性,从而提高系统的可靠性和效率。
1304 0