关于签名和加密解密

来源:互联网 发布:动漫素材软件下载 编辑:程序博客网 时间:2024/05/17 01:15

RSA算法中数字签名技术实际上是通过一个哈希函数来实现的。数字签名的特点是它代表了文件的特征,文件如果发生改变,数字签名的值也将发生变化。不同的文件将得到不同的数字签名。一个最简单的哈希函数是把文件的二进制码相累加,取最后的若干位。哈希函数对发送数据的双方都是公开的只有加入数字签名及验证才能真正实现在公开网络上的安全传输。加入数字签名和验证的文件传输过程如下:

首先是发送方

发送方首先用哈希函数从原文得到数字签名,然后采用公开密钥体系用发送方的私有密钥对数字签名进行加密,并把加密后的数字签名附加在要发送的原文后面;

发送一方选择一个秘密密钥对文件进行加密,并把加密后的文件通过网络传输到接收方;

发送方用接收方的公开密钥对密秘密钥进行加密,并通过网络把加密后的秘密密钥传输到接收方;

接受方使用自己的私有密钥对密钥信息进行解密,得到秘密密钥的明文;

接收方用秘密密钥对文件进行解密,得到经过加密的数字签名;

接收方用发送方的公开密钥对数字签名进行解密,得到数字签名的明文;

接收方用得到的明文和哈希函数重新计算数字签名,并与解密后的数字签名进行对比。如果两个数字签名是相同的,说明文件在传输过程中没有被破坏。

如果第三方冒充发送方发出了一个文件,因为接收方在对数字签名进行解密时使用的是发送方的公开密钥,只要第三方不知道发送方的私有密钥,解密出来的数字签名和经过计算的数字签名必然是不相同的。这就提供了一个安全的确认发送方身份的方法。

安全的数字签名使接收方可以得到保证:文件确实来自声称的发送方。鉴于签名私钥只有发送方自己保存,他人无法做一样的数字签名,因此他不能否认他参与了交易。

数字签名的加密解密过程和私有密钥的加密解密过程虽然都使用公开密钥体系,但实现的过程正好相反,使用的密钥对也不同。数字签名使用的是发送方的密钥对,发送方用自己的私有密钥进行加密,接收方用发送方的公开密钥进行解密。这是一个一对多的关系:任何拥有发送方公开密钥的人都可以验证数字签名的正确性,而私有密钥的加密解密则使用的是接收方的密钥对,这是多对一的关系:任何知道接收方公开密钥的人都可以向接收方发送加密信息,只有唯一拥有接收方私有密钥的人才能对信息解密。在实用过程中,通常一个用户拥有两个密钥对,一个密钥对用来对数字签名进行加密解密,一个密钥对用来对私有密钥进行加密解密。这种方式提供了更高的安全性。

0 0