SHA1与MD5

SHA1和MD5算法详解和源码 先吹一下牛,这个估计是带中文注释写的最清楚的MD5和SHA1源码。呵呵。 1 吐槽一下 最近在整理一些代码,发现自己的库里面缺少一些HASH的的代码,于是决定移植一套代码进来,本来认为是个极其轻松的事情,结果却搞的小小蛋痛了一把。很多开源代码都有一点凌乱。 移植过程代码主要参考过rhash这个库,好处是后面发现,其实辛亏参考的是这套库。后面发现其他库,在某些环节陷得更深,这... 阅读详情

SHA1的使用

SHA1的全称是Secure Hash Algorithm(安全哈希算法)。加密哈希函数将任意长度的二进制字符串映射为固定长度的小型二进制字符串。加密哈希函数有这样一个属性:在计算上不大可能找到散列为相同的值的两个不同的输入;也就是说,两组数据的哈希值仅在对应的数据也匹配时才会匹配。数据的少量更改会在哈希值中产生不可预知的大量更改。所以你很难从加密后的文字中找到蛛丝马迹。

SHA1 算法的哈希值大小为 160 位。是一种不可逆的算法。

SHA1相关:

System.Security.Cryptography.SHA1
System.Security.Cryptography.SHA1CryptoServiceProvider()
System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(strSource, "SHA1")


例子:

/// <summary>
      /// 方法一:通过使用 new 运算符创建对象
    /// <summary>
     /// <param name="strSource">需要加密的明文</param>
     /// <returns>返回16位加密结果,该结果取32位加密结果的第9位到25位</returns>
    public string Get_SHA_Method1(string strSource)
    {
      //new
        System.Security.Cryptography.SHA1 sha= new System.Security.Cryptography.SHA1CryptoServiceProvider();
        //获取密文字节数组
       byte [] bytResult = sha.ComputeHash(System.Text.Encoding.Default.GetBytes(strSource));
        //转换成字符串,并取9到25位
        //string strResult = BitConverter.ToString(bytResult, 4, 8);
        //转换成字符串,32位
        string strResult = BitConverter.ToString(bytResult);
        //BitConverter转换出来的字符串会在每个字符中间产生一个分隔符,需要去除掉
      strResult = strResult.Replace("-", "");
        return strResult;
    }
   /// <summary>
    /// 方法二:通过调用特定加密算法的抽象类上的 Create 方法,创建实现特定加密算法的对象。
    /// </summary>
    /// <param name="strSource">需要加密的明文</param>
    /// <returns>返回32位加密结果</returns>
    public string Get_SHA_Method2(string strSource)
    {
        string strResult = "";
        //Create
        System.Security.Cryptography.SHA1 sha = System.Security.Cryptography.SHA1.Create();
        //注意编码UTF8、UTF7、Unicode等的选择 
        byte[] bytResult = sha.ComputeHash(System.Text.Encoding.UTF8.GetBytes(strSource));
        //字节类型的数组转换为字符串
        for (int i = 0; i < bytResult.Length; i++)
        {
            //16进制转换 
            strResult = strResult + bytResult[i].ToString("X");
        }
        return strResult;
    }
    
    /// <summary>
    /// 方法三:直接使用HashPasswordForStoringInConfigFile生成
    /// </summary>
    /// <param name="strSource">需要加密的明文</param>
    /// <returns>返回32位加密结果</returns>
    public string Get_SHA_Method3(string strSource)
    {
        return System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(strSource, "SHA1");
    }


 

MD5的使用

 

MD5的全称是Message-Digest Algorithm 5(信息-摘要算法),在90年代初由Mit Laboratory for Computer Science和Rsa data security inc的Ronald l. rivest开发出来,经md2、md3和md4发展而来。它的作用是让大容量信息在用数字签名软件签署私人密匙前被"压缩"成一种保密的格式(就是把一个任意长度的字节串变换成一定长的大整数).不管是md2、md4还是md5,它们都需要获得一个随机长度的信息并产生一个128位的信息摘要.

MD5 算法的哈希值大小为 128 位。是一种不可逆的算法。

 

    与MD5 相关:

System.Security.Cryptography.MD5
System.Security.Cryptography.MD5CryptoServiceProvider()
System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(strSource, "MD5")


例子:

/// <summary>
    ///方法一:通过使用 new 运算符创建对象
     /// </summary>
     /// <param name="strSource">需要加密的明文</param>
     /// <returns>返回16位加密结果,该结果取32位加密结果的第9位到25位</returns>
    public string Get_MD5_Method1(string strSource)
     {
          //new
        System.Security.Cryptography.MD5 md5 = new System.Security.Cryptography.MD5CryptoServiceProvider();
        //获取密文字节数组
        byte[] bytResult = md5.ComputeHash(System.Text.Encoding.Default.GetBytes(strSource));
        //转换成字符串,并取9到25位
        string strResult = BitConverter.ToString(bytResult, 4, 8);
        //转换成字符串,32位
        //string strResult = BitConverter.ToString(bytResult);
        //BitConverter转换出来的字符串会在每个字符中间产生一个分隔符,需要去除掉
        strResult = strResult.Replace("-", "");
         return strResult;
    }
        ///<summary>
        ///方法二:通过调用特定加密算法的抽象类上的Create 方法,创建实现特定加密算法的对象。
        ///</summary>
        ///<param name="strSource">需要加密的明文</param>
        ///<returns>返回位加密结果</returns>
        public string Get_MD5_Method2(string strSource)
        {
            string strResult = "";
            //Create
            System.Security.Cryptography.MD5 md5 = System.Security.Cryptography.MD5.Create();
            //注意编码UTF8、UTF7、Unicode等的选择 
            byte[] bytResult = md5.ComputeHash(System.Text.Encoding.UTF8.GetBytes(strSource));
            //字节类型的数组转换为字符串
            for (int i = 0; i < bytResult.Length; i++)
            { 
                //16进制转换
                strResult = strResult + bytResult[i].ToString("X");  //只有对数字加密时会缺少位数
                strResult = strResult + bytResult[i].ToString("X2"); //这样可以解决 
               strResult = strResult + bytResult[i].ToString("X").PadLeft(2,'0'); //这种方法也可以解决 PadLeft的意思是在字符串的左边添加空格,使字符串达到指定的长度。PadRight是在字符串的右侧加空格。
            }
            return strResult;
        }
        ///<summary>
        ///方法三:直接使用HashPasswordForStoringInConfigFile生成
        ///</summary>
        ///<param name="strSource">需要加密的明文</param>
        ///<returns>返回位加密结果</returns>
        public string Get_MD5_Method3(string strSource)
        {
            return System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(strSource, "MD5");
        }


 转自:http://blog.youkuaiyun.com/fogle/article/details/5688463

 

自己的一点补充:网上看到说SHA1比MD5安全性要好,但性能却较MD5差。

MD5、SHA1、SHA256的简单讲解 最近在学习密码学的相关知识,在此做个记录总结。同时也尽量以一种简单的方式给各位初学者讲解。 阅读详情

相关推荐

MD5和SHA1算法的C++实现和使用

MD5算法: MD5.H #ifndef MD5_H #define MD5_H typedef struct { unsigned int count[2]; unsigned int state[4]; unsigned char buffer[64]; } MD5_CTX; #define F(x,y,z) ((x & y) | (~x & z)) #defin

蓝色天空 9397

密码学系列之五:MD5、SHA1——一文搞懂哈希函数

Hash 函数是密码学的一个重要分支,它将任意长度的输入变换为固定长度输出,是一种的不可逆的单向密码体制。Hash函数在数字签名和消息完整性检测等方面有广泛的应用。本文将首先介绍 Hash 函数的基本概念,然后详述 MD5、SHA1算法,并对其安全性进行分析,最后介绍基于 Hash函数的消息认证码。

聚集机器学习、信息安全 1万+

md5、sha1+salt和Bcrypt对比

引言 用md5/sha1+salt的方法保存密码是不安全的. 文章中用连续9个Bcrypt加感叹号来强调, 保存密码推荐用Bcrypt. youkuaiyun.com两天前把数据库弄丢了, 里面的密码是明文保存的. 我对密码和安全没有研究, 但是在我粗浅的记忆中, hash+salt是非常主流的方法. 如果说这样也不靠谱, 那我正好借这个机会复习一下. 密码等级我把密码安全分为两个等级, 黄色和红色. 当数据库

无名剑 7499

全面探索SHA1和MD5工具使用及原理

本文还有配套的精品资源,点击获取 简介:本文详细介绍了SHA1和MD5这两种重要的哈希函数及其应用。SHA1和MD5主要用于数据完整性验证和密码存储等场景,但它们的安全性已随技术发展而降低。尽管如此,它们仍在某些领域发挥作用。文章还探讨了一个名为“SHA1MD5工具”的软件,该工具能够计算文件的SHA1和MD5哈希值,帮助用户验证文件的完整性和一致性。 1. SH...

weixin_34511754的博客 1392

MD5和SHA1文件完整性校验工具详解

MD5,全称为Message-Digest Algorithm 5,是一种广泛使用的哈希函数,可以产生出一个128位(16字节)的哈希值,通常用一个32位的十六进制字符串表示。MD5由Ronald Rivest在1991年设计,其目的是替代MD4算法。MD5作用是确保信息传输完整一致。它是通过对信息进行填充,然后进行数据的分组处理,每一组进行一系列的逻辑函数运算。

weixin_42230607的博客 1221

MD5、SHA1、SHA256算法

MD5是一个安全散列算法,输入两个不同的明文不会得到相同的输出值,根据输出值,不能得到原始的明文,即其过程是不可逆的。所以要解密MD5没有现成的算法,只能穷举法,把可能出现的明文,用MD5算法散列之后,把得到的散列值和原始的数据形成一个一对一的映射表,通过匹配从映射表中找出破解密码所对应的原始明文。

旭日的博客 3358

md5、sha1散列码生成工具

自己写的md5和sha1码生成工具,网上有文件的散列码生成工具,也有字符串在线生成散列码工具,此工具支持字符串的散列码生成,可直接打开执行,方便快捷。

MD5和sha1

1.MD5(Message Digest algorithm 5,信息摘要算法) 2.SHA(Secure Hash Algorithm,安全散列算法) SHA-1与MD5的比较 因为二者均由MD4导出,SHA-1和MD5彼此很相似。相应的,他们的强度和其他特性也是相似,但还有以下几点不同: 1.对强行攻击的安全性:最显著和最重要的区别是SHA-1摘要比MD5摘要长32 位。使用强行技术,产生任何...

weixin_45365547的博客 1万+

密码解析器64未MD5与sha1转换

密码解析器64未MD5与sha1转换密码解析器64未MD5与sha1转换密码解析器64未MD5与sha1转换

元数据及数据仓库相关概念

文章目录元数据(metadata)的概念Data about Data定义技术元数据业务元数据总结数据仓库ODS简单的理解为 Operational Data Store, 运营数据仓储 数据整合层(也叫做数据缓冲层)EDW简单理解为 Enterprise Data Warehouse, 企业数据仓库ODS与EDW之间的差异使用角色数据来源数据获取性能和及时性数据架构数据共享能力数据系统提供应用数...

frone的专栏 3139

CryptoPP:md5加密、sha1签名

CryptoPP:md5加密、sha1签名 CryptoPP是一个强大的密码库,官网是https://www.cryptopp.com/。上面有比较详细的具体例子和说明文档,不过例子程序稍显片面,无法满足所有的应用场景,把这2天研究的一些加解密算法封装一下分享出来。 1、md5加密 这个很简单没什么好说的,CryptoPP最好的地方是有编码器可以简单快捷的格式化输出流,不用再丢md5加密后的数据进...

ecrisraul的博客 3221

SICK LMS111激光雷达数据解析实战:从原始帧到三维点云的完整流程

本文详细解析了SICK LMS111激光雷达从原始数据帧到三维点云的完整处理流程,包括数据帧结构解析、坐标转换、点云可视化及性能优化技巧。通过实战代码示例,展示了如何高效处理激光雷达数据,并应用于动态物体检测、地面分割等工业场景,为AGV和服务机器人开发者提供实用指南。

garlic的博客 769

关于sha1加密与md5加密

1.区别 Hash,一般翻译做"散列",也有直接音译为"哈希"的,就是把任意长度的输入,变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,而不可能从散列值来唯一的确定输入值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。MD5与SHA1都是Hash算法,MD5输出是128位的...

abma21132911的博客 641

python爬虫豆瓣读书top250+数据清洗+数据库+Java后端开发+Echarts数据可视化(二)

之前的博客已经写了python爬取豆瓣读书top250的相关信息,接下来继续看如何清洗数据。 如果有没看懂的或是不了解上一部分说的是什么内容的,请看https://blog.youkuaiyun.com/qq_45804925/article/details/112848887 现在开始具体内容的复习: 1. 豆瓣读书top250信息预处理 #数据清洗 import pandas as pd import re import time # 先读取数据文件 data = pd.read_csv('E:/Class/商.

qq_45804925的博客 4442

python音频信号分析

声音以具有诸如频率、带宽、分贝等参数的音频信号的形式表示,典型的音频信号可以表示为幅度和时间的函数

MAY的博客 2785

Guava生成MD5、SHA1、SHA256

import com.google.common.base.Charsets; import com.google.common.hash.Hashing; import org.junit.jupiter.api.Test; /** * @description: 单测 * @author: lizz * @date: 2020/3/9 2:21 下午 */ public class ...

进击的小白 3498

语义分割(Semantic Segmentation)近年发展综述

目标:为图像中每个像素分配一个语义类别标签(如“道路”、“行人”、“天空”),不区分同类实例。关键挑战精确边界恢复(高空间分辨率)全局上下文理解(大感受野)计算效率与精度平衡小样本/弱监督泛化语义分割的十年演进,是一条从专用→通用、封闭→开放、慢速→实时、像素→语义2015:FCN/U-Net 奠基;2018:DeepLabv3+/PSPNet 实现高精度;2020:HRNet+OCR 登顶竞赛;2021:SegFormer 开启 Transformer 新纪元;2023+

浩瀚之水的专栏 978

Android计算文件的MD5和SHA1

AlienTech for better life!~

AlienTech for better life!~ 8446

AI预测彩票,使用chatgpt和lstm神经网络(文末附源码)

AI预测彩票,使用chatgpt和lstm神经网络(文末有彩蛋)

淘淘小窝 1万+

SEGGER Embedded Studio初体验

先楫HPM5E00EVK开发环境搭建

hywing's blog 1109

散列算法比较:MD5、SHA1、SHA256有哪些区别

在信息安全领域,经常会用到MD5、SHA1、SHA256算法。这三种算法都属于散列算法,或者叫作哈希算法。它们具有输入任意长度,输出长度固定,以及单向性(无法根据散列值还原出消息)的特点。那么,MD5、SHA1、SHA256有哪些区别,安全性如何,是否能够解密?

m0_69916115的博客 9233

药物对接仿真软件:HADDOCK_(9).结果分析方法

HADDOCK是一种强大的药物对接仿真工具,通过对生成的输出文件进行详细的分析,我们可以验证仿真结果的可靠性,并为进一步优化药物设计提供依据。常见的分析方法包括解读输出文件、使用可视化工具进行结构分析、评估对接模型的稳定性和准确性等。通过这些步骤,我们可以更全面地了解受体和配体的结合模式,从而提高药物设计的成功率。

kkchenjj的博客 1007

mysql5 sha1加密_md5加密,sha1加密--md5在线解密

Result:base64:MTIzNDU2md5:e10adc3949ba59abbe56e057f20f883emd5_middle:49ba59abbe56e057md5(md5($pass)):14e1b600b1fd579f47433b88e8d85291md5(md5(md5($pass))):c56d0e9a7ccec67b4ea131655038d604md5(unicode):c...

weixin_42501892的博客 2425

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

攻破 MD5 SHA1 强抗碰撞性。

github 传送门https://github.com/mythkiven/SHAttered 两个不同的pdf,计算sha1摘要时,发现sha1摘要是一样的,哈哈,是不是很神奇? 经过精心构造,两个pdf文件:shattered-1.pdf与shattered-2.pdf的sha1摘要完全一致。 pdf的格式: 简单的拆分下: - 删除两个pdf中不同的数据...

Kiven's Program Space 2770

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

各种绕过(MD5|SHA1)

由于md5函数无法处理数组,会返回null,所以md5加密后的结果是下面这样。由于0e开头的字符串会转换为0,所以真正比较的过程会变成下面这样。结果返回true,也就是说数组的md5值进行比较时,结果相等。,而数组绕过不只可以绕过弱类型比较,还可以绕过。比如将两个md5值进行弱类型比较。比如将两个数组的md5值进行比较。需要注意的是0e绕过只能绕过。MD5加密后变成这样。

Finx_Az的博客 965

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

上一篇: 关于HTML中的滚动条/去掉滚动条
下一篇: Web.config配置详解
kyleing
博客等级 码龄18年 19粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值