精华内容
下载资源
问答
  • 单向散列函数介绍

    千次阅读 2018-09-22 15:49:31
    单向散列函数有一个输入和一个输出,其中输入称为消息,输出称为散列值。单向散列函数可以根据消息的内容计算出散列值,而散列值就可以被用来检查消息的完整性。 单向散列函数根据消息的内容计算出散列值。 这里...

    一 点睛

    单向散列函数有一个输入和一个输出,其中输入称为消息,输出称为散列值。单向散列函数可以根据消息的内容计算出散列值,而散列值就可以被用来检查消息的完整性。

    单向散列函数根据消息的内容计算出散列值。

    这里的消息不一定是人类能够读懂的文字,也可以是图像文件或声音文件。单向散列函数不需要知道消息实际代表的含义。无论任何消息,单向散列函数都会将它作为单纯的比特序列来处理,即根据比特序列计算出散列值。

    散列值的长度和消息的长度无关。无论消息是1比特、还是100MB、甚至100GB,单向散列函数都会计算出固定长度的散列值。以SHA-256单向散列函数为例,它所计算的散列值的长度永远是256比特(32字节)。

    散列值的长度总是固定的。

    由于散列值很短,因此很容易处理和使用。

    二 实战

    场景:Alice想确认今天看到的文件和昨天的文件是否是同一份文件

    回家之前,Alice用单向散列函数计算文件的散列值,在这里Alice的文件就相对于消息。假设她计算出的散列值如下:

    单向散列函数所输出的散列值长度时固定的(在这个例子中是32字节),无论Alice的文件大小是几百MB,甚至是几GB,散列值的长度永远是32字节(256比特)。Alice可以将这个值打印出来放在安全的地方。

    第二天早上,Alice再次计算硬盘中文件的散列值,如果再次计算出的散列值为:

    和昨晚的散列值一致,就可以判断文件是真的。只要单向散列函数工作正常,那么“只要散列值相等,消息就相等”这个判断就有很高的概率是成立的。

    如果计算出的散列值像下面这样:

    和昨晚散列值不一致,那么这个文件和昨晚的文件就绝对是不一样的。

    要确认完整性,不需要对比消息本身,而只要对比单向散列函数计算出的散列值就可以了。

     

    展开全文
  • 单向散列函数 (Hash)

    2021-01-10 15:48:39
    单向散列函数1.1 什么是单向散列函数1.2 术语1.3 单向散列函数的特性1.4 单向散列函数的实际应用1.4.1 检测软件是否被篡改1.4.2 消息认证码1.4.3 数字签名1.4.4 伪随机生成器1.4.5 一次性口令1.5 常用的单向散列...

    1. 单向散列函数

    单向散列函数 ------- 获取消息的指纹

    在刑事侦查中,侦查员会用到指纹。通过将犯罪现场采集的指纹与指纹库比对,或与嫌疑人的指纹进行比对,就能够知道谁与案件有关联

    在计算机中,有时候也会用到"指纹"。当需要比较两条消息是否一致时,通常不必对消息内容比较,直接比较它们的"指纹"就行。

    1.1 什么是单向散列函数

    单向散列函数,有一个输入和一个输出,其中输入称为消息(message),输出称为散列值(hash value)。单向散列函数可以根据消息的内容计算出散列值,而散列值就可以被用来检查消息的完整性。 简单说就是把任意长度的内容转换成固定长度的输出串,且通过输出串难以还原 原始内容

    单向散列函数

    这里的消息不一定是人能看懂的文字,可以是图片或者声音文件。单向散列函数不需要知道消息实际代表的含义。无论任何消息,单向散列函数都会将它作为单纯的比特序列来处理。即根据比特序列计算出散列值

    散列值的长度和消息的长度无关。无论消息多大,单向散列函数都会计算出固定长度的散列值。以sha-1单向散列函数为例,它计算出的散列值的长度永远都是160比特(20字节)。

    1.2 术语

    单向散列函数相关的术语,有很多变体,不同参考资料中所使用的术语也不同。
    单向散列函数也被称为消息摘要函数(message digest function) 、哈希函数或者杂凑函数
    输入单向散列函数的消息也成为原像(pre-image)。
    单向散列函数的输出值也称为消息摘要(message digest)护或者指纹(fingerprint)。
    完整性也成为一致性。

    1.3 单向散列函数的特性

    通过使用单向散列函数,即便是确认几百MB大小的文件完整性,也只要对比很小的散列值就可以了。通常将单向散列函数拥有以下特性。

    1. 根据任意长度的消息计算出固定长度的散列值

    首先,单向散列值的输入必须能够是任意长度的消息。
    无论输入多长的消息,单向散列函数必须能够生成很短的散列值。

    1. 能够快速计算出散列值

    计算散列值所花费的时间必须要短。

    1. 消息不同散列值也不同

    为了能够确认完整性,消息中哪怕只有1比特的改变,也必须有很高概率产生不同的散列值。
    两个不同的消息产生同一个散列值的情况被称为碰撞(collsion)。

    碰撞性
    难以发生碰撞的性质称为抗碰撞性。密码技术中所使用的单向散列函数,都要具备抗碰撞性。
    碰撞性

    1. 具备单向性

    单向散列函数必须具备单向性(one-way)。 单向性指的是无法通过散列值反算出消息的性质。根据消息计算出散列值可以很容易,但计算路径无法反推。

    单向性
    正如同将玻璃粉碎很容易,却无法将碎片还原成原先的玻璃。估计消息计算出散列值很容易,但根据散列值却无法逆推算出消息。

    单向散列函数并不是一种加密,因此无法通过解密将散列值还原为原阿里的消息。

    1.4 单向散列函数的实际应用

    1.4.1 检测软件是否被篡改

    可以使用单向散列函数来确认自己下载的软件是否被篡改。

    很多软件,都会把散列值公布在官方网站上。用户下载完软件后可自行计算散列值,与官方的散列值进行比对。来确认自己下载的软件是否与提供者的一致。

    为了减轻服务器压力,很多软件都会借助多个网站(镜像站点)发布软件,在这种情况下,单向散列函数就会在检测软件是否被篡改方法发挥重要作用。
    软件是否篡改

    1.4.2 消息认证码

    使用单向散列函数可以构造消息认证码

    消息认证码是将"发送者和接收者之间的共享密钥"和"消息",进行混合计算后得到的散列值。使用消息认证码可以检测并防止通信过程中的错误,篡改以及伪装。

    消息认证码在SSL/TLS中也有使用

    1.4.3 数字签名

    在进行数字签名时会使用单向散列函数。
    数字签名是现实社会中的签名(sign)和盖章这样的行为在电脑世界的实现。数字签名的过程非常耗时,因此一般不会对整个消息内容直接施加数字签名,而是先通过单向散列函数计算出消息的散列值,然后在对这个散列值施加数字签名。

    1.4.4 伪随机生成器

    使用单向散列函数可以构造伪随机数生成器。

    密码技术中所使用的随机数需要具备"事实上不可能根据过去的随机数列预测未来的随机数列"这样的性质。为了保证不可预测性,可以利用单向散列函数的单向性。

    1.4.5 一次性口令

    使用单向散列函数可以构造一次性口令(one-time password)

    一次性口令经常被用于服务器对客户端的合法性认证。在这种方式中,通过使用单向散列函数可以保证口令在通信链路上传送一次(one-time),因此即使窃听者窃取了口令,也无法使用。

    1.5 常用的单向散列函数

    MD4 MD5 SHA1 SHA-224 SHA-256 SHA-384 SHA-512

    算法比特数字节数
    MD4128bit16byte
    MD5128bit16byte
    SHA-1160bit20byte
    SHA-224224bit28byte
    SHA-256256bit32byte
    SHA-384384bit48byte
    SHA-512512bit64byte
    展开全文
  • 单向散列函数特点 1.根据任意长度的消息,计算出固定长度的散列值。 2.计算速度快,能快速计算出散列值。 3.消息不同,散列值也不同。 4.具备单向性。 常见的几种单向散列函数 1.MD4、MD5 产生128bit的散列值,MD就是...

    参考来源

    https://ke.qq.com/course/314070

    什么是单向散列函数

    单向散列函数,又被称为消息摘要函数,哈希函数。
    可以根据根据消息内容计算出散列值,可以理解为是每个消息的身份证。

    单向散列函数的特点

    1.根据任意长度的消息,计算出固定长度的散列值。
    2.计算速度快,能快速计算出散列值。
    3.消息不同,散列值也不同。
    4.具备单向性。

    常见的几种单向散列函数

    1.MD4、MD5
    产生128bit的散列值,MD就是Message Digest的缩写,目前已经不安全。

    2.SHA-1
    产生160bit的散列值,目前已经不安全。

    3.SHA-2
    SHA-256、SHA-384、SHA-512,散列值长度分别是256bit、384bit、512bit。

    4.SHA-3
    全新标准

    单向散列函数的应用

    1.防止数据被篡改。
    2.口令加密,登录流程中密码传散列值到服务器,这样可以防止服务器被黑客攻破后,密码外泄。

    展开全文
  • 加密之单向散列函数 单向散列函数 什么是单向散列函数 one-way function 有一个输入,,,有一个输出 输入的称为消息message, 输出的称为散列值,也叫哈希值 hash-value 单向散列函数可以根据消息的内容 计算出...
    
    
    
    
    
    加密之单向散列函数
    
    
    
    
    
    单向散列函数
    什么是单向散列函数
    one-way function
    有一个输入,,,有一个输出
    输入的称为消息message,
    输出的称为散列值,也叫哈希值 hash-value
    
    单向散列函数可以根据消息的内容
    计算出散列值
    而散列值可以用来检查消息的完整性
    
    
    单向散列函数的应用
    1.消息认证码
    2.数字签名
    3.伪随机数生成器
    4.一次性口令
    5.密码存储
    
    
    
    
    常用的单向散列函数有
    MD4,MD5
    
    
    
    
    
    说一下哈希散列的校验功能
    比如我们
    shasum -a 256 Ethereum-intaller.exe
    会生成一串哈希值
    abcdabcdabcd
    然后我们对比这串哈希值和官方网站的哈希值是否一致
    这就证明我们的这个Ethe.exe没有被篡改过
    
    特点
    1.单向
    2.只要算法指定了,生成的哈希值的长度就是一致的
    3.只要输入内容不变,输出不变
    
    特性
    1.原像不可逆
    2.抗碰撞性
    
    
    
    然后我们说一下
    ECC 椭圆曲线算法
    这是主流的非对称加密算法
    比特币使用这个算法
    go语言原生没有提供ECC的加密解密功能
    只提供了签名和检验的功能
    
    
    
    
    
    
    
    然后我们看一下
    在go语言中使用MD5
    
    func main() {
    
    	text := "你好 世界 hello world"
    
    	MD5 := GenerateMD5(text)
    	fmt.Println(MD5)
    
    }
    
    func GenerateMD5(text string) string {
    
    	textBytes := []byte(text)
    
    	MD5 := md5.Sum(textBytes)
    
    	MD5Text := hex.EncodeToString(MD5[:])
    
    	return MD5Text
    }
    
    
    
    
    
    
    我们再看一下另外一种计算MD5的方法
    
    func main() {
    
    	text := "你好 世界 hello world"
    
    	MD5 := GenerateMD5(text)
    	fmt.Println(MD5)
    
    }
    
    func GenerateMD5(text string) string {
    
    	hash := md5.New()
    
    	io.WriteString(hash,text)
    
    	MD5 := hash.Sum(nil)
    
    	MD5Text := hex.EncodeToString(MD5)
    
    	return MD5Text
    }
    
    
    
    
    
    计算之后我们可以看到
    两种方法计算出来的MD5值都是
    
    d9608ec51cb97c2b732009e076e2acb7
    
    
    
    
    
    
    

     

    展开全文
  • 1.1 单向散列函数 单向散列函数(One-way hash function),也称之为消息摘要函数(Message Digest Function),哈希函数,它可以...1.2 单向散列函数特点 1.散列值的长度与消息的长度无关,无论消息是1bit、10M、100G...
  • 单向散列函数&数字签名&数字证书 写于前 iOS中常在哪些场景应用到 写一个系列 本文概要 单项散列函数(One-way Hash Function 为什么存在? 基本概念: 特点: 常见的单项散列函数 主要应用场景 数字签名 为什么存在...
  • 网络安全网络层 - ARP欺骗DoS、DDoS 介绍与防御传输层 - SYN洪水攻击(SYN flooding attack)传输层 - LAND攻击应用层 - DNS劫持、HTTP劫持HTTP协议的安全问题单向散列函数(One-way hash function)单向散列函数 - ...
  • 单向哈希函数 Hash(散列值)函数又称哈希函数。 针对CIA系统中的完整性,确保这个文件是真的这个文件是否被篡改。前面说过的再传送攻击以及中间人攻击等,本质都是伪造数据并令接收人认为是正确数据,从而达到一些...
  • 单向散列加密

    2019-10-02 01:17:44
    开发中有一种场景,就是只需要验证正确性而... 单向散列函数特点  1. 对任意长度的消息散列值是定长的。  2. 散列计算速度快,非常高效。  3. 明文不同,散列加密后的密文一定不同;明文相同,散列加密后密文...
  • 单项散列函数

    2019-11-29 16:32:49
    单向散列函数 介绍 单项散列函数又称安全散列函数或哈希函数,根据消息的内容计算出散列值,散列值又称为消息摘要或者摘要 消息摘要长度固定,主要用来验证消息的完整性 单项散列算法的种类: MD4/MD5/SHA 单项散列...
  • mbedtls系列文章 mbedtls | 01 - 移植mbedtls库到STM32的两种方法 mbedtls | 02 - 伪随机数生成器(ctr_drbg)的配置与使用 文章目录mbedtls系列文章一、单向散列算法1. 单向散列函数2....单向散列函数
  • 散列函数的应用及其安全性 ...利用单向散列函数计算出需要签名的消息的邮摘,再利用签名算法对邮摘签名来代替直接对原来的消息进行签名 有效地提高了签名的效率和速度,也减少了传输的信息量,节约了网络的...
  • 网络安全-安全散列函数,信息摘要SHA-1,MD5原理

    千次阅读 多人点赞 2014-07-04 23:06:26
    单向散列函数或者安全散列函数之所以重要,不仅在于消息认证(消息摘要,数据指纹),还有数字签名(加强版的消息认证)和验证数据的完整性。常见的单向散列函数有MD5和SHA 散列函数的要求  散列函数的目的是文件、...
  • 散列函数和文件比较

    2020-03-01 12:06:49
    散列函数和文件比较 目录 一、散列函数 2 1.散列函数(Hash function)=散列算法、哈希函数 2 2.散列碰撞(collision) 2 二、MD5 2 1.MD5是什么?128位散列值[16字节]一般使用32位16进制表示 2 2. 在...
  • 单向散列加密 散列是信息的提炼,通常其长度要比信息小得多,且为一个固定长度。加密性强的散列一定是不可逆的,这就意味着通过散列结果,无法推出任何部分的...单向散列函数一般用于产生消息摘要,密钥加密等,常
  • 散列函数和数字签名

    2019-10-17 14:35:24
    散列函数:也称作哈希函数,消息摘要函数,单向函数或杂凑函数。散列函数的作用不是完成数据的加密和解密,而是用于验证数据的完整性。散列值通常是一个短的随机字母和数字组成的字符串。 上述流程中收发双方...
  • 1、散列函数: Hash,一般翻译做“散列”,也有直接音译为"哈希"的,就是把任意长度的输入(又叫做预映射, pre-image),通过散列算法,变换成固定长度...数学表述为:h = H(M) ,其中H( )--单向散列函数,M--任意...
  • 散列函数的应用及其安全性 一、散列函数的具体应用 Hash(散列函数),一般翻译做"散列",也有直接音译为"哈希"的,就是把任意长度的输入(又叫做预映射, pre-image),通过散列算法,变换成固定长度的输出,该...
  • 散列函数是区块链最为基础部分。在密码体系中地位也十分重要。Filecoin作为新一代的区块链,在散列函数采用上也十分大胆
  • 散列函数安全性扩展

    2019-09-29 02:01:21
    散列函数的具体应用: 1,数据校验 HASH函数有类似数据冗余校验类似的功能,但是它比简单的冗余校验碰撞的概率要小得多,顾而在现在密码学中总是用HASH来做关键数据的验证。 2,单向性的运用 利用HASH函数的...
  • (2)结合生日攻击、以及2004、2005年王晓云教授有关MD5安全性和2017年google公司SHA-1的安全性,说明散列函数的安全性以及目前安全散列函数的发展。问题2的回答可以结合下面给出的第一个链接。 (3)结合md5算法中...
  • 本次作业为扩展有关散列函数安全性的知识扩展。 作业题目:散列函数的应用及其安全性。内容要求: (1) 给出散列函数的具体应用。 (2) 结合生日攻击、以及2004、2005年王晓云教授有关MD5安全性和2017年google公司...
  • 1、散列函数的具体应用 Hash算法在信息安全方面的应用主要体现在以下的5个方面: (1)消息认证 可以用来验证信息的来源是真实的,...由于非对称算法的运算速度较慢,所以在数字签名协议中,单向散列函数扮演了一...
  • 散列函数的应用及其安全性 一、散列函数的说明 散列函数,亦为哈希函数(Hash Function),一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。 对于散列,其概念属于查找,它不以关键字的比较为基本操作...
  • 题目内容要求:(1) 给出散列函数的具体应用。(2) 结合生日攻击、以及2004、2005年王晓云教授有关MD5安全性和2017年google公司SHA-1的安全性,说明散列函数的安全性以及目前安全散列函数的发展。问题2的回答可以参考...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,576
精华内容 2,630
关键字:

单向散列函数特点