当前位置: 首页 > news >正文

C# 中使用Hash用于密码加密

通过一定的哈希算法(典型的有MD5,SHA-1等),将一段较长的数据映射为较短小的数据,这段小数据就是大数据的哈希值。他最大的特点就是唯一性,一旦大数据发生了变化,哪怕是一个微小的变化,他的哈希值也会发生变化。类似于DNA,既然是DNA,那就保证了没有两个数据的哈希值是完全相同的。

哈希值的作用:哈希值,即HASH值,是通过对文件内容进行加密运算得到的一组二进制值,主要用途是用于文件校验或签名。正是因为这样的特点,它常常用来判断两个文件是否相同。

比如,从网络上下载某个文件,只要把这个文件原来的哈希值同下载后得到的文件的哈希值进行对比,如果相同则表示两个文件完全一致,下载过程没有损坏文件。而如果不一致,则表明下载得到的文件跟原来的文件不同,文件在下载过程中受到了损坏。

using System.Security.Cryptography;
using System.Text;namespace WebApplicationPwd;public static class PasswordHelper
{public static string Encryption(string pwd, string? salt){if (string.IsNullOrEmpty(salt)){var pwdBytes = Encoding.ASCII.GetBytes(pwd);var pwdHashBytes = MD5.HashData(pwdBytes);return Convert.ToBase64String(pwdHashBytes);}else{//var pwdBytes = Encoding.ASCII.GetBytes(pwd + salt);//var pwdHash256Bytes = SHA256.HashData(pwdBytes);//return Convert.ToBase64String(pwdHash256Bytes);#region PBKDF2+saltvar saltBytes = Encoding.ASCII.GetBytes(salt);using var pkdf2 = new Rfc2898DeriveBytes(pwd, saltBytes, 1000);var pwdHashRfcBytes = pkdf2.GetBytes(32);return Convert.ToBase64String(pwdHashRfcBytes);#endregion#region Bcrypt  & Argon2  不需要加盐   //   <PackageReference Include="BCrypt.Net-Next" Version="4.0.3" />//return BCrypt.Net.BCrypt.HashPassword(pwd);#endregion}}public static bool VerifyPassword(string pwd, string hashPwd, string salt){return Encryption(pwd, salt) == hashPwd;}public static string CreateSalt(){var randomNu = RandomNumberGenerator.GetBytes(32);return Convert.ToBase64String(randomNu);}
}
http://www.lryc.cn/news/527284.html

相关文章:

  • 如何建设一个企业级的数据湖
  • 目标跟踪之sort算法(3)
  • 【java数据结构】HashMapOJ练习题
  • Nginx前端后端共用一个域名如何配置
  • SpringBoot3+Vue3开发学生选课管理系统
  • Linux系统 C/C++编程基础——基于GTK+的图形用户界面编程
  • 【Leetcode 每日一题】40. 组合总和 II
  • python 变量范围的定义与用法
  • TRTC实时对话式AI解决方案,助力人机语音交互极致体验
  • dev c++ ‘unordered_set‘ does not name a type
  • 算法每日双题精讲 —— 二分查找(寻找旋转排序数组中的最小值,点名)
  • three.js+WebGL踩坑经验合集(4.2):为什么不在可视范围内的3D点投影到2D的结果这么不可靠
  • Kafka运维宝典 (二)- kafka 查看kafka的运行状态、broker.id不一致导致启动失败问题、topic消息积压量告警监控脚本
  • 全球AI模型百科全书,亚马逊云科技Bedrock上的100多款AI模型
  • 微信小程序中常见的 跳转方式 及其特点的表格总结(wx.navigateTo 适合需要返回上一页的场景)
  • 【Elasticsearch】index:false
  • 新版IDEA创建数据库表
  • 输入带空格的字符串,求单词个数
  • C语言程序设计十大排序—希尔排序
  • Excel制作合同到期自动提醒!
  • “AI质量评估系统:智能守护,让品质无忧
  • 爬虫基础之爬取某基金网站+数据分析
  • 使用 Aryn DocPrep、DocParse 和 Elasticsearch 向量数据库实现高质量 RAG
  • Couchbase UI: Server
  • Web3.0时代的挑战与机遇:以开源2+1链动模式AI智能名片S2B2C商城小程序为例的深度探讨
  • langchain基础(一)
  • 【Android】布局文件layout.xml文件使用控件属性android:layout_weight使布局较为美观,以RadioButton为例
  • RabbitMQ 架构分析
  • Qt Enter和HoverEnter事件
  • 大语言模型之prompt工程