数字签名基本原理
用户U1写了个邮件给用户U2,准备给它签个名。签名过程如下:
首先生成个私钥m,由某算法(我们称为算法A)根据私钥生成公钥n。注意,如果算法A的输入是n,其输出不会是m。即由公钥n无法得出私钥m。
用户U1把私钥m藏在自己电脑里,不让别人知道;而将公钥存放在一个全世界都认可的“银行”里,所有人都可以得到这个公钥。
用户U1用私钥m对邮件内容进行转换,得到了若干字符,这些字符就是用户U1这封邮件的签名。这些字符和原始邮件内容都会发给用户U2。
用户U2拿到邮件后,从中拿出签名,然后从那家全世界都认可的“银行”里找到用户U1的公钥,然后用它来转换签名,如果转换的结果和邮件内容是一模一样的,则可以确定是用户U1发过来的邮件。如果不一致,那就是伪造的邮件。
如果文本太大,可以对文本的散列值进行签名。
资料
!!!!
《改变未来的九大算法》 第九章