首页 > 编程知识 正文

常见哈希函数,哈希函数加密算法

时间:2023-05-06 10:29:09 阅读:59052 作者:3373

目录1大气羊函数Hash1.1构建方法1.2大气羊函数密码学应用2数字签名2.1基本签名认证流程2.2生动形象范例2.3认证机构CA和数字证书来源3应用

在你说数字之前,你必须了解大气中的羊函数

1大气羊函数散列(Hash Hash )通常被翻译成散列、散列或大气羊,并使用散列算法将任何长度的输入(也被称为预映射pre-image )转换成固定长度的输出此转换是压缩映射。 也就是说,由于哈希值空间通常远远小于输入空间,不同的输入可能会散列到同一输出中,因此无法根据哈希值确定唯一的输入值。 简单来说,它是一个将任意长度的消息压缩为一定长度的消息摘要的函数。

大气羊表中的元素由大气羊函数决定。 以数据要素的关键字k为自变量,由某一定的函数关系(称为大气的羊函数)计算出的值是该要素的存储目的地。 表示如下。

addr=h(key )

混列函数h将可变长度的块m作为输入,生成固定长度的混列值h=h(m )。

m说是h的原画。 由于h是多对一的映射,所以多个原图像与任意给定的混列值h对应。 如果满足xy且h(x )=h ) y,则称为碰撞。

1.1构造方法大气羊函数的构造方法有很多。 https://baike.baidu.com/item/散列函数/9796422? fr=aladdin

1.2大气羊函数在密码学中的应用可用于数据完整性的验证,即判断数据是否在篡改中超标。

2数字签名数字签名是大气羊函数的一大应用。

2.1基本签名认证过程大气羊函数是一种“压缩函数”,可以利用大气羊函数通过散列函数算法将任意长度的输入转换为固定长度的输出。 这个输出的大气羊值是信息摘要,也叫数字摘要。 在正式的数字签名中,发送方首先对发送文件采用大气羊算法,固定长度的消息摘要(Message Digest ); 用自己的私钥(Secret key,SK )在消息摘要中签名,形成发送方的数字签名。 数字签名作为团队件与原文一起发送给收件人。收件人首先用发送方公钥对数字签名进行解密得到发送方的数字摘要,然后用同一大气羊函数对原文进行大气羊计算,得到新的消息摘要,最后将消息摘要与接收到的消息摘要进行比较

下图说明了数字签名的操作过程。

2.2生动形象的例子娇生惯养的刺猬有两个关键。 一个是公钥,另一个是私钥。

被惯坏了的刺猬把公钥给了他的朋友们——快乐的鞋垫、道格、FDSB――每人一把。

联邦调查局给被惯坏了的刺猬写秘密信。 她写完后,用被惯坏了的刺猬公钥加密,就能达到保密的效果。

被惯坏了的刺猬接收后,用秘密密钥解密,就能看到信的内容。 这里要强调的是,只要不泄露被惯坏的刺猬的秘密密钥,这封信就很安全,即使落入他人之手也无法破译。

被惯坏了的刺猬回复了fdsb,决定采用“数字签名”。 他写完之后首先使用散列函数,生成信的摘要(digest )。

然后,被惯坏的刺猬使用秘密密钥对该摘要进行加密,生成“数字签名”(signature )。

被惯坏了的刺猬会把这个签名附在信下面,一起发给fdsb。

fdsb接收后,取下数字签名,用被惯坏的刺猬公钥解密,得到信的摘要。 这封信被证明确实是被惯坏了的刺猬发出的。

fdsb还在消息本身中使用Hash函数,并将得到的结果与上一步中得到的摘要进行比较。 如果两者一致,就证明这封信没有修改。

概括而言,加密的摘要数字签名

2.3证书颁发机构CA和数字证书来源出现复杂情况。 道格为了欺骗fdsb,偷偷用fdsb的电脑,用自己的公钥交换了被惯坏了的刺猬的公钥。 这个时候,fdsb实际上有道格的公钥,但他认为这是被惯坏了的刺猬的公钥。 因此,道格冒充被惯坏的刺猬,用自己的私钥生成“数字签名”,并写信给fdsb,使fdsb能够用假的被惯坏的刺猬公钥解密。

后来,fdsb感到奇怪,意识到无法判断公钥是否真的是被惯坏了的刺猬。 她去被惯坏了的刺猬身上找“证书中心”(certificate authority,简称CA ),想出了认证公钥的方法。 证书中心使用自己的私钥加密被宠坏的刺猬的公钥以及一些相关信息,以生成“数字证书”。数字证书包含有BOB的公匙以及证书的相关信息,只有CA的公钥才可以解开。

认证中心一般由政府出资设立。 每个实体都有从CA发送来的证书(证书),其中包含公钥及其所有者的标识信息。 此证书是由CA数字签名的。 任何用户都可以信赖

地方获得认证中心 CA 的公钥,此公钥用来验证某个公钥是否为某个实体所拥有。有的大公司也提供认证中心服务。

娇气的小刺猬拿到数字证书以后,就可以放心了。以后再给fdsb写信,只要在签名的同时,再附上数字证书就行了。

fdsb收信后,用CA的公钥解开数字证书,就可以拿到娇气的小刺猬真实的公钥了,公钥用来解密数字签名,得到摘要1,对比明文(文件)进行hash函数生成摘要2,对比这两个摘要,就能证明"数字签名"是否真的是娇气的小刺猬签的。


利用第三方认证机构(CA)生成的数字证书的认证流程可以这样概括:

注:上图的单向散列函数指的就是大气的羊函数。上图少了以下内容:CA机构用自己的私钥,生成"数字证书"(Digital Certificate),然后发送给用户B;图中用户A给用户B发送数据包包含了 文件(明文)+ 加密的摘要(数字签名)+ 数字证书(只有CA的公匙才能解开数字证书从而获得A公匙)。

概括一下,就是:
1.首先,用户A向证书颁发机构提交个人信息,申请证书。通过CA审核后,CA生成用户A的证书,证书中包括了A的公钥和私钥还有CA的数字签名。证书颁发机构CA本身拥有一对密钥,这是对CA所颁发的证书进行数字签名和保密的基础,绝不能泄露。
2.用户A收到的证书中包括了带有CA数字签名的,专属A公钥和私钥,CA的数字签名确保了别人不能伪造用户A的公钥和私钥。
3.同时,用户B也必须信任给用户A颁发证书的第三方认证机构CA,即用户B拥有CA颁发的"CA公钥"。
4.通信时,用户A向用户B发送的数据包中的"加密的摘要"上有用户A的数字签名,“A公钥” 上有认证机构CA的数字签名。用户B收到数据包之后,先要验证收到的 “A公钥”
是否来源合法:是认证机构颁发的带有CA签名的公钥吗?用户B并不信任用户A,但是用户B信任第三方认证机构CA。所以,用户B先使用证书颁发机构颁发的
“CA公钥” 验证收到的 “A公钥” 是否由同一认证机构颁发,是否在颁发之后更改过。
5.验证通过后,用户B便相信收到的 “A公钥” 确实来自真实的用户A。随后再使用 “A公钥” 对 “加密的摘要” 进行解密,进行上文提到的对比操作,以判断文件是否更改。

下面,我们看一个应用"数字证书"的实例:https协议。这个协议主要用于网页加密。

首先,客户端向服务器发出加密请求。

服务器用自己的私钥加密网页以后,连同本身的数字证书,一起发送给客户端。

客户端(浏览器)的"证书管理器",有"受信任的根证书颁发机构"列表。客户端会根据这张列表,查看解开数字证书的公钥是否在列表之内。
如果数字证书记载的网址,与你正在浏览的网址不一致,就说明这张证书可能被冒用,浏览器会发出警告。

如果这张数字证书不是由受信任的机构颁发的,浏览器会发出另一种警告。

3 应用

1.数字签名可以防止数据被伪造。其他人不能伪造对消息的签名,因为私有密钥只有签名者自己知道,所以其他人不可以构造出正确的签名结果数据。
2.数字签名可以防止数据被篡改。数字签名与原始文件或摘要一起发送给接收者,一旦信息被篡改,接收者可通过计算摘要和验证签名来判断该文件无效,从而保证了文件的完整性。
3.数字签名可以防止数据抵赖。数字签名即可以作为身份认证的依据,也可以作为签名者签名操作的证据。要防止接收者抵赖,可以在数字签名系统中要求接收者返回一个自己签名的表示收到的报文,给发送者或受信任第三方。如果接收者不返回任何消息,此次通信可终止或重新开始,签名方也没有任何损失,由此双方均不可抵赖。
4.数字签名可以对数据进行多重加密。手写签字的文件一旦丢失,文件信息就极可能泄露,但数字签名可以加密要签名的消息,在网络传输中,可以将报文用接收方的公钥加密,以保证信息机密性。
5.数字签名可以实现客户的身份认证。在数字签名中,客户的公钥是其身份的标志,当使用私钥签名时,如果接收方或验证方用其公钥进行验证并获通过,那么可以肯定,签名人就是拥有私钥的那个人,因为私钥只有签名人知道。

综上所述,数字签名的作用是接收方能够向第三方证明接收到的消息及发送源的真实性而采取的一种安全措施,其使用可以保证发送方不能否认和伪造信息。“数字签名”也是目前电子商务、电子政务中应用最普遍、技术最成熟的、可操作性最强的一种电子签名方法。

参考:
https://baike.baidu.com/item/Hash/390310?fromtitle=hash%E5%87%BD%E6%95%B0&fromid=10555888&fr=aladdin
https://www.cnblogs.com/block2016/p/5623902.html
https://zhuanlan.zhihu.com/p/31477508
https://www.sohu.com/a/215306405_100027537

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。