数字签名与数字加密

数字签名主要通过如下几个过程:算法

信息发送者使用一单向散列函数(HASH函数)对信息生成信息摘要;函数

信息发送者使用本身的私钥签名信息摘要;加密

信息发送者把信息自己和已签名的信息摘要一块儿发送出去;class

信息接收者经过使用与信息发送者使用的同一个单向散列函数(HASH函数)对接收的信息自己生成新的信息摘要,再使用信息发送者的公钥对信息摘要进行验证,以确认信息发送者的身份和信息是否被修改过。方法

数字加密主要通过如下几个过程:数据

当信息发送者须要发送信息时,首先生成一个对称密钥,用该对称密钥加密要发送的报文;加密算法

信息发送者用信息接收者的公钥加密上述对称密钥;文件

信息发送者将第一步和第二步的结果结合在一块儿传给信息接收者,称为数字信封;co

信息接收者使用本身的私钥解密被加密的对称密钥,再用此对称密钥解密被发送方加密的密文,获得真正的原文。解密

数字签名和数字加密的过程虽然都使用公开密钥体系,但实现的过程正好相反,使用的密钥对也不一样。数字签名使用的是发送方的密钥对,发送方用本身的私有密钥进行加密,接收方用发送方的公开密钥进行解密,这是一个一对多的关系,任何拥有发送方公开密钥的人均可以验证数字签名的正确性。数字加密则使用的是接收方的密钥对,这是多对一的关系,任何知道接收方公开密钥的人均可以向接收方发送加密信息,只有惟一拥有接收方私有密钥的人才能对信息解密。另外,数字签名只采用了非对称密钥加密算法,它能保证发送信息的完整性、身份认证和不能否认性,而数字加密采用了对称密钥加密算法和非对称密钥加密算法相结合的方法,它能保证发送信息保密性。

 

更形象的说法:

1、公钥加密

假设一下,我找了两个数字,一个是1,一个是2。我喜欢2这个数字,就保留起来,不告诉大家(私钥),而后我告诉你们,1是个人公钥。 我有一个文件,不能让别人看,我就用1加密了。别人找到了这个文件,可是他不知道2就是解密的私钥啊,因此他解不开,只有我能够用 数字2,就是个人私钥,来解密。这样我就能够保护数据了。 个人好朋友x用个人公钥1加密了字符a,加密后成了b,放在网上。别人偷到了这个文件,可是别人解不开,由于别人不知道2就是个人私钥, 只有我才能解密,解密后就获得a。这样,咱们就能够传送加密的数据了。

2、私钥签名

若是我用私钥加密一段数据(固然只有我能够用私钥加密,由于只有我知道2是个人私钥),结果全部的人都看到个人内容了,由于他们都知 道个人公钥是1,那么这种加密有什么用处呢? 可是个人好朋友x说有人冒充我给他发信。怎么办呢?我把我要发的信,内容是c,用个人私钥2,加密,加密后的内容是d,发给x,再告诉他 解密看是否是c。他用个人公钥1解密,发现果真是c。 这个时候,他会想到,可以用个人公钥解密的数据,必然是用个人私钥加的密。只有我知道我得私钥,所以他就能够确认确实是我发的东西。 这样咱们就能确认发送方身份了。这个过程叫作数字签名。固然具体的过程要稍微复杂一些。用私钥来加密数据,用途就是数字签名。

相关文章
相关标签/搜索