数字签名这个东西是用来进行通信的一种验证方式,但是与传统相区别的是数字签名的作用是用于验证,也就是说数字签名的目的并不是让可能在网络环境下的第三方无法获得传输的信息,而是保护信息在传输中的正确性,即使存在监听的第三方,第三方也只能获取信息但是无法对于信息进行篡改。

        数字签名的原理其实非常简单,传输的内容将会有两个部分组成,第一个就是内容,内容与完全不加密的内容一致,第二部分就是密文,也就是将所要传输的内容通过加密之后的数据。这两部分数据充分暴露了数字签名的使用意图,即使在网络环境之中存在监听,截取之类的,数字签名并不在乎是不是可能有第三方获取到了传输的内容,所以通信内容里有一部分是直接明文的。

        然后我们来谈谈数字签名如何完成其设计目的的------防止篡改和验证,数字签名的加密解密存在两个码,一个是公钥,一个是私钥。譬如存在以下情况A要向B传输数据然后要通过数字签名进行验证,这个时候A需要通过一个简单的方法生成一对公钥和私钥,然后A需要将公钥给B,这个时候B就可以用公钥解密A传输数据中的加密内容了。

       这种模式存在一个优点,就是不需要安全的管道来传输秘钥,因为在这里用来进行报文加密的私钥只有一个人知道--A,A不需要将私钥给任意一个人,这一点在很大程度上确保了加密时候的安全性。然后拿到公钥的B通过对于报文进行解密,获取到对应的明文内容,和数据中的第一部分(明文数据)进行对比,如果相符合的话就能够认为这个数据确实是从A那里发过来的。由于除了A以外没有其他人有私钥,而且在整个过程中A并不要把自己的私钥进行告诉其他人,所以在这里这个验证是相当有效力。