浅述.Net中的Hash算法(顺带对称、非对称算法)

news2025/9/21 5:56:16

【写在前面】

对称加密算法(只有一个私钥,比如DES【不推荐】、AES);

非对称加密算法(公钥与私钥,比如RSA);

Hash算法也称为散列函数算法,任意长度的数据都转换为固定长度的字符串(称为“哈希值”或简称“哈希”)(没有密钥,但可以通过“加盐”增加彩虹表攻击的难度以提高哈希值安全性, 比如MD5、SHA-1【不推荐】、SHA-256、SHA-384、SHA-512),有别于前面两种加密算法,哈希算法具有不可逆性,虽然相同的输入一定得到相同的输出,不同的输入大概率得到不同的输出,但不是绝对,不同的输入也有可能碰撞出相同的哈希值输出(因此哈希算法通常应用于只加密不解密的场景:可用于验证原始数据是否被篡改、存储加密后的密码等)。 

在Hash算法的基础上,在来说下HMAC(Hash-based Message Authentication Code,哈希运算消息认证码):​HMAC是密钥相关的哈希运算消息认证码​,HMAC运算利用哈希算法,以一个密钥(好比Hash加盐处理,但相对加盐有不同的内部处理机制,详可参见 HMAC算法详解 或 HMAC与HS256算法)和一个消息为输入,生成一个消息摘要作为输出,其核心和基础还是Hash算法。 

FormsAuthentication.HashPasswordForStoringInConfigFile 实现Hash加密(已弃用)

好,以上是相关背景知识。

今天在一个旧系统中看到这样的密码验证方法,也就是说后台密码存储是以将“用户名+密码”以Hash加密存放的,这里想说的是.Net 4.5中提供的Hash加密方法 FormsAuthentication.HashPasswordForStoringInConfigFile, 通过说明可知该方法已被官方弃用,不再推荐使用,可以在VS2022中反编译进入内部了解其实现细节

以下FormsAuthentication.HashPasswordForStoringInConfigFile的内部实现,从实现的调用中可以看到System.Web.Security.Cryptography.CryptoAlgorithms内部静态类中不仅有创建SHA512方法,还有相应创建HMACSHA512的方法,可做下了解:

 

替代方案:XxxCryptoServiceProvider类实现加密算法

 既然FormsAuthentication.HashPasswordForStoringInConfigFile已经过时弃用,官方有可用的替代方法吗?当然有,同样在System.Security.Cryptography 命名空间,可以找到SHA1CryptoServiceProvider、MD5CryptoServiceProvider、SHA256CryptoServiceProvider、SHA384CryptoServiceProvider、SHA512CryptoServiceProvider类, (同时也提供了对称算法的DESCryptoServiceProvider 、 AesCryptoServiceProvider 及 非对称算法的RSACryptoServiceProvider)

以下以MD5为例,实现如下:

/// <summary>
/// 32位MD5加密
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
private static string Md5Hash(string input)
{
	MD5CryptoServiceProvider md5Hasher = new MD5CryptoServiceProvider();
	byte[] data = md5Hasher.ComputeHash(Encoding.Default.GetBytes(input));
	StringBuilder sBuilder = new StringBuilder();
	for (int i = 0; i < data.Length; i++)
	{
	    sBuilder.Append(data[i].ToString("x2"));
	}
	return sBuilder.ToString();
}

(附)包括过时及不过时的加解密方法,可以参考:C#实现加密与解密详解_C#教程_脚本之家

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1584204.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

chromium 协议栈 cronet ios 踩坑案例

1、请求未携带 Accept-Language http header 出现图片加载失败 现象&#xff1a; 访问 https://www.huawei.com/cn/?ic_mediumdirect&ic_sourcesurlent 时出现图片加载失败的问题 预期结果&#xff1a; 原因&#xff1a; 网络库删除了添加 Accept-Language header 的逻…

数学建模-最优包衣厚度终点判别法-二(K-Means聚类)

&#x1f49e;&#x1f49e; 前言 hello hello~ &#xff0c;这里是viperrrrrrr~&#x1f496;&#x1f496; &#xff0c;欢迎大家点赞&#x1f973;&#x1f973;关注&#x1f4a5;&#x1f4a5;收藏&#x1f339;&#x1f339;&#x1f339; &#x1f4a5;个人主页&#xff…

【数据结构】单链表(一)

上一篇【数据结构】顺序表-CSDN博客 我们了解了顺序表&#xff0c;但是呢顺序表涉及到了一些问题&#xff0c;比如&#xff0c;中间/头部的插入/删除&#xff0c;时间复杂度为O(N);增容申请空间、拷贝、释放旧空间会有不小的消耗&#xff1b;增容所浪费的空间... 我们如何去解…

电商技术揭秘十八:电商平台的云计算与大数据应用小结

电商技术揭秘相关系列文章 电商技术揭秘一&#xff1a;电商架构设计与核心技术 电商技术揭秘二&#xff1a;电商平台推荐系统的实现与优化 电商技术揭秘三&#xff1a;电商平台的支付与结算系统 电商技术揭秘四&#xff1a;电商平台的物流管理系统 电商技术揭秘五&#xf…

日志监控思路分享,只监控日志内容,不存储

有一个这样的需求&#xff0c;就是实时监控日志文件的内容&#xff0c;不需要存储&#xff0c;仅当某行日志内容触发某个规则时调用一段业务逻辑就行了。比如用户触发限流规则&#xff0c;就将其封禁并发送钉钉通知到运维群。 看到这个需求首先想到的就是日志采集工具&#xff…

数据可视化的3D问题

三维对象非常流行&#xff0c;但在大多数情况下会对解释图形的准确性和速度产生负面影响。 以下是对涉及 3d 的主要图形类型的回顾&#xff0c;并讨论了它们是否被认为是不好的做法。 1、3D 条形图&#xff1a;不要 这是一个 3d 条形图。 你可能很熟悉这种图形&#xff0c;因为…

Windows上面搭建Flutter Android运行环境

Flutter Android环境搭建 电脑上面安装配置JDK电脑上下载安装Android Studio电脑上面下载配置Flutter Sdk &#xff08;避坑点一&#xff09;下载SDK配置对应的环境变量 到path 电脑上配置Flutter国内镜像运行 flutter doctor命令检测环境是否配置成功创建运行Flutter项目&…

网站HTTP升级成为HTTPS的方法

将网站从HTTP免费升级为HTTPS&#xff0c;您可以按照以下步骤操作&#xff1a; 1. 选择证书颁发机构&#xff08;CA&#xff09;&#xff1a; - 为了免费升级&#xff0c;您可以选择使用JoySSL这样的公益项目。JoySSL提供免费、自动化的SSL/TLS证书颁发服务&#xff0c;适用于各…

拉普拉斯IPO丨用创新科技助力中国光伏产业高质量发展

近年来&#xff0c;在“以科技创新引领现代化产业体系建设”的战略指引下&#xff0c;整个光伏行业持续推动技术迭代与生产力升级&#xff0c;朝着更高光电转化效率、更低成本加速迈进。 在此背景下&#xff0c;一批以技术驱动为第一生产力的光伏厂商们&#xff0c;在自身领域…

Java编程题 | 打印杨辉三角

大家可以关注一下专栏&#xff0c;方便大家需要的时候直接查找&#xff0c;专栏将持续更新~ 题目描述 打印出杨辉三角形&#xff08;要求打印出10行如下图&#xff09; 解题思路 初始化变量&#xff1a;设置一个变量表示行号&#xff0c;从1开始。循环打印杨辉三角形…

DSP笔记9-9. GPIO程序控制LED

GPIO23低电平点亮 周期性改变GPIO23电平&#xff0c;使得LED闪烁 void main(void) { InitSysCtrl(); //初始化系统时钟 InitGpio(); //初始化 GPI0 EALLOW; //允许保护 GpioCtrlRegs.GPAMUX2.bit.GPI0230; //将GP1023设置为GPIO GpioCtrlRegs.GPADIR.bit.GPI0231; //将GP1…

恒创科技:香港服务器CPU核心数如何选?越多越好吗?

​  谈到 CPU“核心”是完成所有处理的组件&#xff0c;程序能否顺利运行的第一因素是你有多少个核心。但由于不同的计算任务占用不同的资源&#xff0c;所以如果您打算简单地创建小型网站或者其他请求处理数据也不高的业务&#xff0c;那么您的基本型号应该包含 1、2 核已经…

康谋分享 | aiSim5 物理相机传感器模型验证方法(一)

摘要&#xff1a; aiSim5可以实时模拟复杂的传感器配置&#xff0c;在多GPU分布式渲支持的支持下&#xff0c;aiSim可以渲染20多个摄像头、10多个雷达和10多个激光雷达在同一环境下运行。aiSim5独有的实时渲染引擎能够满足对物理精确环境和天气模拟的所有要求&#xff0c;具有…

RUKOTA 网络ip对讲系统

RUKOTA 网络ip对讲系统 IP对讲采用TCP/IP技术, 将音频信号以数据包形式在局域网和广域网上进行传送&#xff0c;是一套纯数字传输的免提对讲系统&#xff0c;解决了传统对讲系统存在的传输距离有限、易受干扰等问题。 IP对讲系统结构简捷, 只需将终端接入计算机网络即可构成功…

AcWing---游戏---区间dp

1388. 游戏 - AcWing题库 思路&#xff1a; 两个人比赛&#xff0c;是一道博弈论问题&#xff0c;主要思想就是A-B取到最大值。A是我方得到的分数&#xff0c;B是对方得到的分数。我们设g[i][j]是从第i个数到第j个数&#xff0c;先手-后手取得的最大值&#xff0c;分类讨论&a…

【教学类-50-06】20240410“数一数”4类星号图片制作PDF学具

作品展示&#xff1a; 背景需求&#xff1a; 前文遍历四个文件夹&#xff0c;分别将每个文件夹内的10个图片的左上角加入星号&#xff0c;显示难度系数 【教学类-50-05】20240410“数一数”4类图片添加“难度星号”-CSDN博客文章浏览阅读55次&#xff0c;点赞2次&#xff0c;…

ctfshow--web入门--文件上传--web168--web170

web168 法一免杀脚本 还是检查&#xff0c;准备上传图片马 我写的是<?php eval($_POST[a]);?> 上传之后没反应 那么查一下&#xff0c;原来是发现对eval,system还有$_POST和$_GET进行过滤,$_REQUEST还可以用 那么再写一个马&#xff08;免杀脚本&#xff09; <?…

lovesql 手工sql注入

1.页面 2.万能密码登录成功 我还傻乎乎的以为密码就是flag 但不是 3. 继续注入 判断列数 确定了只有三列 开始尝试联合注入 4.使用联合注入之前先判断显示位 5.之后一步一步的构造&#xff0c;先得到当前数据库名 利用database&#xff08;&#xff09; 再得到库里有哪些表 …

vue3中使用antv-S2表格(基础功能版)

先看展示效果&#xff1a; 可以调整行宽、列宽、自定义字段图标、表头图标、添加排序、显示总计、小计等 首先确保搭建一个vue3项目环境&#xff0c;从0开始的小伙伴着重看第一点&#xff1a; 一、搭建vue3项目环境 首先创建一个vue3vitets项目&#xff0c;可以查看下面相关…

windows + pytorch + gpu

nvidia、cuda和cudnn之间的版本匹配关系 1. 命令行查看nvidia的驱动版本 英伟达驱动版本是512.78&#xff0c;cuda版本是11.6&#xff08;说明要下的cuda toolkit版本最高是11.6的&#xff09; 插入&#xff1a;显卡驱动的安装 2. 网站查看cuda和英伟达驱动、cudnn之间的关系…