数字签名的工作原理

【勇芳软件工作室】汉化HomePreviousNext

从消息创建数字签名涉及两个步骤。第一步涉及从消息中创建【哈希值】(也称为【消息摘要】)。然后使用签名者的私钥对该哈希值进行签名。以下是创建数字签名所涉及的步骤的说明:

为了验证签名,需要消息和签名。首先,必须以与创建签名时相同的方式从消息创建哈希值。然后使用签名者的公钥对该签名验证该哈希值。如果哈希值和签名匹配,您可以确信该邮件确实是签署者最初签名的邮件,并且没有被篡改。下图说明了验证数字签名所涉及的过程。

哈希值由少量二进制数据组成,通常大约为160位。这是使用【哈希算法】生成的。这些算法中的一些将在本节后面列出。

所有哈希值共享以下属性,不管使用的算法如何:

*散列值为固定长度,无论消息的大小如何。消息可以是几千字节或几GB,没关系。根据使用的算法,散列值长度一般为128或160位。

*每对不相干的消息都会转换成一个完全不同的散列值,即使这两个消息只有一个不同。使用当今的技术,发现一对消息可以转换为相同的散列值是不可取的,而不会破坏散列算法。

*所有散列算法都是完全确定性的。也就是说,每次使用相同的算法对特定消息进行散列时,将产生完全相同的散列值。

*所有散列算法都是单向的。给定一个哈希值,不可能恢复原始消息。事实上,只有单独的哈希值才能确定原始消息的属性。