数字签名和验签

Posted cuiran

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数字签名和验签相关的知识,希望对你有一定的参考价值。

数字签名

数字签名使用了公钥加密领域的技术;通常定义两种互补的运算,一个用于签名,另一个用于验证。

数字签名是只有信息的发送者才能产生的别人无法伪造的一段数字串,这段数字串标明这段信息是发送者发送的。

数字签名是非对称密钥加密技术与数字摘要技术的应用。

数字签名的作用:

保证信息传输的完整性(数字摘要)确认发送者的身份认证、防止交易中的抵赖发生(非对称密钥加密技术)

数字签名过程:

数字签名技术是将摘要信息用发送者的私钥加密,与原文一起传送给接收者。

接收者只有用发送者的公钥才能解密被加密的摘要信息,然后用HASH函数对收到的原文产生一个摘要信息,与解密的摘要信息对比。如果相同,则说明收到的信息是完整的,在传输过程中没有被修改,否则说明信息被修改过,因此数字签名能够验证信息的完整性。

数字签名和验签的特点和过程

数字签名主要用于验证被签数据在传输过程中是否被篡改包含加密算法(encryption)和摘要算法(digest)摘要算法包括MD族和SHA族,特点是变长输入,定长输出,输出即为目标数据的摘要加密使用RSA非对称算法,包括公钥和私钥,私钥对消息(Message)进行加密,公钥对数据和签名进行解密

数字签名过程(代码级):

利用哈希算法生成摘要。

SHA1会生成160bit(20字节)的hash值;OpenSSL还支持SHA224, SHA256, SHA384, SHA512, MD4, MD5等算法

填充hash值

填充值加在生成的hash值之前,openssl中默认是PKCS1。

填充后的摘要长度等于消息长度。

利用私钥进行签名。

验签过程(代码级):

利用公钥进行验签。

移除Padding

得到的hash值对比消息的hash值

以上是关于数字签名和验签的主要内容,如果未能解决你的问题,请参考以下文章

数字签名和验签的详细过程

数字签名和验签

Java RSA (SHA1withRSA)签名和验签

Java应用服务系统安全性,签名和验签浅析

用Java实现RSA加解密及签名和验签——.pem文件格式秘钥

用Java实现RSA加解密及签名和验签——.pfx文件格式秘钥