密码学之《Hash函数》

延续昨天的肚子疼- -我们来继续看密码学。

Hash函数是啥?

Hash函数将任意长度的消息压缩为某一固定长度的消息摘要的函数。是多对一的映射。

Hash函数有啥用?

1. 最基础的,加密。sha系列,md5等等一大波常用的加密都属于Hash函数。

2. 用于数字签名(关于数字签名,请看:http://www.cnblogs.com/kuoaidebb/p/4183605.html)。主要作用有两个:一,提高签名速度。由于Hash函数是消息摘要,在一定程度上缩短需要签名的消息的长度。二,不泄露签名所对应的消息。对消息m的签名是y=Sig(z),z=H(m),H是个Hash函数。y是签名应当公开,消息摘要z也可以公开,m可以保密。

3. 消息的完整性检测。在消息传输之前对消息做Hash变换,接收方对收到的消息原文作Hash变换,和接收到的Hash值对比,若相同,可以认为消息是完整无篡改的。貌似压缩文件是这样检测完整性的。

神马是强无碰撞,神马是弱无碰撞?神马又是单向的?

已知HASH函数f(x),单向是指已知x可以求出f(x),但是从f(x)无法推断x

弱无碰撞是指已知x,要找出y使得f(y)=f(x)是不可行的。

强无碰撞是指想找出数对x,y,使得f(x)=f(y)是不可行的

一个密码学上安全的Hash函数应该具有下列性质:

1. 对任意消息x,计算H(x)是容易的

2. 寻找两个不同的消息x,y使得H(x)=H(y)是难解的,即是强无碰撞的。

MD4和SHA-1分别输出多少位?

MD4输出一个128bit的消息摘要,SHA-1是160bit。

时间: 2024-10-19 17:30:41

密码学之《Hash函数》的相关文章

区块链中的密码学之数字签名方案(十二)

1. 前言 类似在纸质合同上签名确认合同内容,数字签名用于证实某数字内容的完整性( integrity)和来源( 或不可抵赖,non-repudiation). 一个典型的场景是,A 要发给 B 一个文件( 一份信息) ,B 如何获知所得到的文件即为 A 发出的原始版本?A 先对文件进行摘要,然后用自己的私钥进行加密,将文件和加密串都发给B.B 收到文件和加密串后,用 A 的公钥来解密加密串,得到原始的数字摘要,跟对文件进行摘要后的结果进行比对.如果一致,说明该文件确实是 A 发过来的,并且文件

RPM简介与基本使用

一.什么是RPM RPM的全名是Red Hat Package Manager,本意是Red Hat 软件包管理,顾名思义是Red Hat 贡献出来的软件包管理:在Fedora .Redhat.Mandriva.SuSE.YellowDog等主流发行版本,以及在这些版本基础上二次开发出来的发行版采用. 简单来说,RPM是以一种数据库记录的方式将所需要的软件安装到Linux主机的一套管理程序,最大的特点是将要安装的软件先编译并打包,通过包装好的软件中默认的数据库记录,记录这个软件在安装的时候需要的

拜占庭将军问题(一)

一.什么是拜占庭将军问题 拜占庭将军问题(Byzantine Generals Problem,是由莱斯利·兰波特在其同名论文[1]中提出的分布式对等网络通信容错问题.在分布式计算中,不同的计算机通过通讯交换信息达成共识而按照同一套协作策略行动.但有时候,系统中的成员计算机可能出错而发送错误的信息,用于传递信息的通讯网络也可能导致信息损坏,使得网络中不同的成员关于全体协作的策略得出不同结论,从而破坏系统一致性.拜占庭将军问题被认为是容错性问题中最难的问题类型之一. 莱斯利·兰波特在其论文中描述了

密码学之《数字签名》

周六要考密码学了,恰逢身体不舒服,没心情看数字什么的,来整理整理数字签名的一点儿知识点~简简单单的几行文字,看官笑看即可~ 什么是数字签名?有毛用? 数字签名主要用于对数字消息进行签名,以防消息的冒名伪造或篡改,也可以用作通信双方的身份鉴别. 为什么数字签名有这样那样的作用? 数字签名有这样几个特性: 1. 可信.任何人都可以验证签名的有效性 2. 不可伪造.除了合法的签名者,任何其他人伪造签名是困难的. 3. 不可复制.对一个消息的签名不能通过复制变成另一个消息的签名,若是复制得到,任何人都能

非对称密码学,摘要,加密,数字签名,数字证书

非对称密码学,摘要,加密,数字签名,数字证书,https://www.jianshu.com/p/4932cb1499bf https://www.cnblogs.com/lovelinux199075/p/9022589.html https数字证书被篡改?CA的权威性,申请认证具有门槛https://www.zhihu.com/question/65464646 原文地址:https://www.cnblogs.com/CreatorKou/p/11577431.html

密码学初级教程(五)数字签名 Digital Signature

密码学家工具箱中的6个重要的工具: 对称密码 公钥密码 单向散列函数 消息认证码 数字签名 伪随机数生成器 提问: 有了消息认证码为什么还要有数字签名? 因为消息认证码无法防止否认.消息认证码可以识别消息是否被篡改或者发送者身份是否被伪装.(消息认证码保证完整性.可以进行认证) 为什么消息认证码无法防止否认,数字签名就能够否认呢? 消息认证码中,能够计算出MAC值的密钥(共享密钥)是由发送者和接受者双方共同持有的,因此发送者和接受者中的任何一方都能够计算MAC值,发送者也就可以声称“这个MAC值

密码学初级教程(三)证书-为公钥加上数字签名

名词解释: 证书(公钥证书,PKC,Public-KeyCertificate):类比驾照,里面记有姓名.组织.邮箱地址.公钥(用于加密的公钥)等个人信息. 举个实际证书的例子:天猫的证书 证书标准规范X.509:证书的标准规范,大体包含三部分: 签名前的证书-签名对象的信息 数字签名算法-对证书签名时所使用的算法 数字签名-对证书施加的签名 PKI(公钥基础设施,Public-Key Infrastructure) 用户-使用PKI的人 认证机构-颁发证书的人 仓库-保存证书的数据库 认证机构

【Java密码学】用Java数字签名提供XML安全

简介 众所周知,XML在产品和项目开发中起着非常重要的作用.通过XML文档可以获取很多信息,还可以使用XML文件进行CRUD(增加.查询.更新和删除)操作.然而值得注意的是,我们如何确保XML中的数据是来自经过认证的可信和可靠的来源.关于XML文件数据的可靠性和真实性存在很多问题.通常的情况是,开发者直接处理XML文件而不去考虑数据的可靠性.有一些情况提出了上面的所有问题.现实生活中,每当我们从邮局收到一封信件时我们如何确定这封信是来自我们的朋友?依据可能是他/她的习惯用语.用词或者邮件详细地址

【密码学】一万字带您走进密码学的世界(下)

引文 密码学是研究编制密码和破译密码的技术科学.研究密码变化的客观规律,应用于编制密码以保守通信秘密的,称为编码学:应用于破译密码以获取通信情报的,称为破译学,总称密码学. 在<一万字带您走进密码学的世界(上)>的文章中我们探讨了对称密码体系,哈希函数等技术,本文继续探讨密码学剩余的部分,本文的主要内容包括,非对称密码体系,签名算法等,因为本部分是区块链技术的基石,所以我会讲的更加详细一点,虽然我已经尽最大努力使思想简化,但是其中的数学理论对于很多人还是很晦涩,建议读者开始之前先读下数论的有关

《程序员密码学》读书笔记

这本书很不错,不过目前市面上已经找不到了,我也是机缘巧合之下才拿到这本书,花了一周多读完了这本书.如书本题目所示,作为程序员读读这本书挺好的.注:个人笔记,做的很随意,而且笔记时间久远,未加修饰就传上来了,主要目的是作为备忘. 1,DES被攻破的方法:差分密码分析,而AES可以抵抗这种攻击~ 2,分组密码等同于伪随机置换(PRP ):伪随机置换就是由算法创建的一种对符号的重新排列,一个安全的PRP目标是:对于仅知道部分置换是不足以以一个有效的概率来确定置换的其他部分. 3,散列函数等同于伪随机函