才子佳人博客

我的故事我讲述

数字签名原理
 
来源:blog.csdn.net  编辑:xjh  2019-05-23

1.1、公钥密码体制

公钥密码体制分为三个部分,公钥、私钥、加密解密算法,它的加密解密过程如下:

加密:通过加密算法和公钥对内容(或者说明文)进行加密,得到密文。加密过程需要用到公钥。

解密:通过解密算法和私钥对密文进行解密,得到明文。解密过程需要用到解密算法和私钥。注意,由公钥加密的内容,只能由私钥进行解密,也就是说,由公钥加密的内容,如果不知道私钥,是无法解密的。

公钥密码体制的公钥和算法都是公开的,私钥是保密的。大家都以使用公钥进行加密,但是只有私钥的持有者才能解密。在实际的使用中,有需要的人会生成一对公钥和私钥,把公钥发布出去给别人使用,自己保留私钥。

1.2、对称加密算法

在对称加密算法中,加密使用的密钥和解密使用的密钥是相同的。也就是说,加密和解密都是使用的同一个密钥。因此对称加密算法要保证安全性的话,密钥要做好保密,只能让使用的人知道,不能对外公开。这个和上面的公钥密码体制有所不同,公钥密码体制中加密是用公钥,解密使用私钥,而对称加密算法中,加密和解密都是使用同一个密钥,不区分公钥和私钥。

1.3、非对称加密算法

在非对称加密算法中,加密使用的密钥和解密使用的密钥是不相同的。前面所说的公钥密码体制就是一种非对称加密算法,他的公钥和是私钥是不能相同的,也就是说加密使用的密钥和解密使用的密钥不同,因此它是一个非对称加密算法。

1.4、RSA简介

RSA密码体制是一种公钥密码体制,公钥公开,私钥保密,它的加密解密算法是公开的。由公钥加密的内容可以并且只能由私钥进行解密,并且由私钥加密的内容可以并且只能由公钥进行解密。也就是说,RSA的这一对公钥、私钥都可以用来加密和解密,并且一方加密的内容可以由并且只能由对方进行解密。

1.5、HASH函数

HASH函数就是把任意长的输入字符串变化成固定长的输出字符串的一种函数。输出字符串的长度称为HASH函数的位数。目前应用最为广泛的HASH函数是SHA-1和MD5,大多是128位和更长。MD5是一个安全的散列算法,输入两个不同的明文不会得到相同的输出值,根据输出值,不能得到原始的明文,即其过程不可逆。

1.6、加密和签名

我们说加密,是指对某个内容加密,加密后的内容还可以通过解密进行还原。比如我们把一封邮件进行加密,加密后的内容在网络上进行传输,接收者在收到后,通过解密可以还原邮件的真实内容。

这里主要解释一下签名,签名就是在信息的后面再加上一段内容,可以证明信息没有被修改过,而且是我写的,怎么样可以达到这个效果呢?

一般是对信息做一个HASH计算得到一个HASH值,注意,这个过程是不可逆的,也就是说无法通过HASH值得出原来的信息内容。在把信息发送出去时,把这个HASH值加密后做为一个签名和信息一起发出去。

接收方在收到信息后,会重新计算信息的HASH值,并和信息所附带的HASH值(解密后)进行对比,如果一致,就说明信息的内容没有被修改过,因为这里HASH计算可以保证不同的内容一定会得到不同的HASH值,所以只要内容一被修改,根据信息内容计算的HASH值就会变化。当然,不怀好意的人也可以修改信息内容的同时也修改HASH值,从而让它们可以相匹配,为了防止这种情况,HASH值一般都会加密后(也就是签名)再和信息一起发送,以保证这个HASH值不被修改。

RSA签名的整个过程如下:

(1)发送方采用某种摘要算法如MD5从报文中生成一个128位的散列值(称为报文摘要);

(2)发送方用RSA算法和自己的私钥对这个散列值进行加密,产生一个摘要密文,这就是发送方的数字签名;

(3)将这个加密后的数字签名作为报文的附件和报文一起发送给接收方:

(4)接收方从接收到的原始报文中采用相同的摘要算法计算出128位的散列值;

(5)报文的接收方用RSA算法和发送方的公钥对报文附加的数字签名进行解密;

(6)如果两个散列值相同,那么接收方就能确认报文是由发送方签名的,而且是正确的。


来源参考:
https://blog.csdn.net/ptonlix/article/details/78912282



分类:网络日志| 查看评论
相关文章
文章点击排行
本年度文章点击排行
发表评论:
  • 昵称: *
  • 邮箱: *
  • 网址:
  • 评论:(最多100字)
  • 验证码: