ECDSA签名+验签

    ECDSA签名每次结果不同。 

    原因:ECDSA签名过程中混入随机值,生成签名结果不同。

    公钥证书验签没问题。

 

1. 签名过程

    假设要签名的消息是一个字符串:“Hello World!”。DSA签名的第一个步骤是对待签名的消息生成一个消息摘要。不同的签名算法使用不同的消息摘要算法。比如,DSS使用SHA1来生成160比特的摘要,而ECDSA256使用SHA256生成256比特的摘要。

    摘要生成结束后,应用签名算法对摘要进行签名:

  1. 产生一个随机数k
  2. 利用随机数k,计算出两个大数r和s。将r和s拼在一起就构成了对消息摘要的签名。

    这里需要注意的是,因为随机数k的存在,对于同一条消息,使用同一个算法,产生的签名是不一样的。从函数的角度来理解,签名函数对同样的输入会产生不同的输出。因为函数内部会将随机值混入签名的过程。

2. 验证过程

    关于验证过程,这里不讨论它的算法细节。从宏观上看,消息的接收方从签名中分离出r和s,然后利用公开的密钥信息和s计算出r。如果计算出的r和接收到的r值相同,则表示验证成功。否则,表示验证失败。

 

参考资料:

http://blog.csdn.net/jiangwlee/article/details/11817579

 

 

你可能感兴趣的:(gmssl)