.NET 9.0 的 Blazor Web App 项目中 Hash 变换(MD5、Pbkdf2) 使用备忘

server/2025/1/18 1:35:37/

一、生成 string 对应的 MD5 码

    /// <summary>/// 生成 string 对应的 MD5 码/// </summary>/// <param name="s">需要转换的字符串 string<br/>/// 如果用于远程第三方认证,s = username + DateTime.Now.Ticks.ToString() + 线下传递的Key;<br/>/// 然后将 hash 值 与 username、DateTime.Now.Ticks.ToString() 共3个参数一起传递给第三方;<br/>/// 第三方使用相同算法生成 MD5 码进行比较验证,使用 DateTime.Now.Ticks.ToString() 判定是否超时。</param>/// <returns>转换后的 hash 值:MD5 码</returns>public static string GetMD5FromString(string s){byte[] data = System.Security.Cryptography.MD5.HashData(System.Text.Encoding.UTF8.GetBytes(s));System.Text.StringBuilder sBuilder = new();for (int i = 0; i < data.Length; i++){sBuilder.Append(data[i].ToString("x2"));}return sBuilder.ToString().ToUpper();}

二、 生成 string 对应的 Pbkdf2 码

    /// <summary>/// derive a 256-bit subkey (use HMACSHA256 with 100 iterations)/// </summary>/// <param name="password">需要转换的字符串 string<br/>/// 如果用于远程第三方认证,则为需要认证的 username</param>/// <param name="salt">盐值,通常为随机数,确保每次生成的 hash 值不同,用于本地密码验证时 salt 与 hash 值同步保存。<br/>/// 如果用于远程第三方认证,salt = DateTime.Now.Ticks.ToString() + 线下传递的Key;<br/>/// 然后将 hash 值与 username、DateTime.Now.Ticks.ToString() 共3个参数一起传递给第三方;<br/>/// 第三方使用相同算法生成 hash 值进行比较验证,使用 DateTime.Now.Ticks.ToString() 判定是否超时。</param>/// <returns>转换后的 hash 值:Pbkdf2 码</returns>public static string GetPbkdf2FromString(string password, string salt){string hashed = Convert.ToBase64String(Microsoft.AspNetCore.Cryptography.KeyDerivation.KeyDerivation.Pbkdf2(password: password,salt: System.Text.Encoding.UTF8.GetBytes(salt),prf: Microsoft.AspNetCore.Cryptography.KeyDerivation.KeyDerivationPrf.HMACSHA256,iterationCount: 100,numBytesRequested: 256 / 8));return hashed;}


http://www.ppmy.cn/server/159223.html

相关文章

Flink开发中的优化方案

前言 在大数据处理领域&#xff0c;Apache Flink以其高吞吐量、低延迟和强大的状态管理能力&#xff0c;成为了实时流处理的首选框架。然而&#xff0c;随着数据量的不断增长和业务复杂性的提高&#xff0c;如何在Flink开发中实施有效的优化方案&#xff0c;成为了一个亟待解决…

【Leetcode 每日一题 - 扩展】3171. 找到按位或最接近 K 的子数组

问题背景 给你一个数组 n u m s nums nums 和一个整数 k k k。你需要找到 n u m s nums nums 的一个 子数组 &#xff0c;满足子数组中所有元素按位或运算 O R OR OR 的值与 k k k 的 绝对差 尽可能 小 。换言之&#xff0c;你需要选择一个子数组 n u m s [ l . . r ] n…

接口自动化入门 : Http的请求头,请求体,响应码解忻!

在进行接口自动化测试时&#xff0c;你需要了解Http的请求头、请求体和响应码的解析。 本文从3个方面介绍这篇文章 一、Http的请求头 二、请求体 三、响应码解忻 一、Http的请求头 HTTP 请求头是 HTTP 请求中的一部分&#xff0c;用于向服务器传递附加的信息。它包含在 HTTP …

2025 年将是统一网络安全的一年

到 2025 年&#xff0c;网络安全将不再只是 IT 团队专属的技术主题&#xff0c;而是将日益成为董事会层面的优先事项。随着网络攻击的频率和严重性不断增加&#xff0c;董事会将需要能够让他们了解组织安全状况的平台。 Armis 首席执行官 Yevgeny Dibrov 认为&#xff0c;统一网…

C# OpenCV机器视觉:极大值抑制

在一个阳光有些慵懒的午后&#xff0c;阿强像往常一样窝在他那被各种电子元件和线路堆满的实验室里&#xff0c;周围的电脑屏幕闪烁着神秘的代码和复杂的图像&#xff0c;仿佛在诉说着一个个未被解开的科技谜题。阿强最近痴迷于机器视觉领域&#xff0c;而今天&#xff0c;他将…

自动化办公|xlwings简介

xlwings 是一个开源的 Python 库&#xff0c;旨在实现 Python 与 Microsoft Excel 的无缝集成。它允许用户使用 Python 脚本自动化 Excel 操作&#xff0c;读取和写入数据&#xff0c;执行宏&#xff0c;甚至调用 VBA 脚本。这使得数据分析、报告生成和其他与 Excel 相关的任务…

大模型-第三章Prompt工程

快速上手大模型 from zhipuai import ZhipuAI client ZhipuAI(api_key"") # 填写您自己的APIKey response client.chat.completions.create(model"glm-4-plus", # 填写需要调用的模型编码messages[{"role": "system", "conte…

关于vite+vue3+ts项目中env.d.ts 文件详解

env.d.ts 文件是 Vite 项目中用于定义全局类型声明的 TypeScript 文件。它帮助开发者向 TypeScript提供全局的类型提示&#xff0c;特别是在使用一些特定于 Vite 的功能时&#xff08;如 import.meta.env&#xff09;。以下是详细讲解及代码示例 文章目录 **1. env.d.ts 文件的…