如何打消数字签名的疑虑(什么是数字签名之二)
如何打消数字签名的疑虑(什么是数字签名之二)用SHA-256函数虽然可以确保和内容的对应性,确保内容不会被修改(如果被修改会导致加密结果的重大变化,详细可参见前一天的文章"数字签名")1. 秘钥可以简单理解为某一算法的输入参数,比如有一串数:5201314,那么我们要现在给他加密,采用一个算法f(给每一位数字 2)=7423536. 这里f就可以理解为我们的加密算法即我们这里所说的SHA-256算法。这里的2就可以简单的认为是我们加密的秘钥。3. 如果输入的内容一模一样,那么用SHA-256函数来进行加密总是能得到相同的最终加密结果。正式由于SHA-256函数具备这些特性,才让我们对他产生浓厚的兴趣。由于在下面的内容中,我们又要频繁的应用到秘钥的概念,这里再总结一下相关要义(但求易懂):
根据昨天的讨论,我们大概清楚了SHA-256算法在数字签名过程中的重要性。
用三句话来概括一下昨天文章的要义:
1. SHA-256是一个安全的HASH算法,不管将什么作为输入参数,最终得到的结果总是一个包含256个二进制位的数值。
2. 文本内容的细微变更(哪怕是一个标点符号,空白格)都会对最终加密结果有着重大的影响。
3. 如果输入的内容一模一样,那么用SHA-256函数来进行加密总是能得到相同的最终加密结果。
正式由于SHA-256函数具备这些特性,才让我们对他产生浓厚的兴趣。
由于在下面的内容中,我们又要频繁的应用到秘钥的概念,这里再总结一下相关要义(但求易懂):
1. 秘钥可以简单理解为某一算法的输入参数,比如有一串数:5201314,那么我们要现在给他加密,采用一个算法f(给每一位数字 2)=7423536. 这里f就可以理解为我们的加密算法即我们这里所说的SHA-256算法。这里的2就可以简单的认为是我们加密的秘钥。
用SHA-256函数虽然可以确保和内容的对应性,确保内容不会被修改(如果被修改会导致加密结果的重大变化,详细可参见前一天的文章"数字签名")
但是,这样仍然无法保证该条签名是小青签的,因为小红,小刚,小明或者任何其他人都可以用SHA-256函数进行加密得到相同的加密串。那如何来保证该条签名是小青签名的,而不是小红,小刚,小李呢?
这里我们就用到了上面我们所说的非对称加密的算法。大概的原理是这样的:
小青用自己的私钥加密(SHA-256("小青欠小红10000元"))得到的结果就可以作为小青的签名。
小青可以将自己的公钥公布出来,这样任意一个人就可以利用小青公布的公钥对小青加密的内容进行验证了。
举个简单的例子:
小青用自己的私钥加密(SHA-256("小青欠小红10000元"))值加上自己的公钥公布出来。
小红可以利用小青公布出来的公钥对小青的数字签名进行解密,得到一串hash值,然后小红可以再用SHA-256("小青欠小红10000元")计算得到的hash值和上面的hash值进行对比,如果两个hash值是相同的,那么可以说明两个问题:
1. 这个签名是小青签署的,要不然不可能可以利用小青的公钥对其解密。
2. 这个签名的内容是"小青欠小红10000元",不然解密后的hash值不可能等于SHA-256("小青欠小红10000元")
经过这两天的讨论,我们可以归纳一下:
1. 数字签名和签名内容的对应性必须得到保证(这是用SHA-256函数来保证的)
2. 数字签名必须可鉴别是谁签名的(可以通过非对称加密的私钥,公钥来进行识别)
小伙伴们,你们听懂了吗?
每天学习一点点,每天进步一点点,欢迎大家关注本头条号,共同学习,共同进步。