http://www.7klian.com

深入浅出:区块链技能中的非对称加密算法--签名和加密

  • 计较椭圆曲线加法得出加密点S(x"',y"') = M(x",y") + r * K(x,y),并和R(x',y')一起发送给吸收方;

    = M(x",y")

    RSA 是被研究得最遍及的公钥算法,从提出到此刻已有四十年的汗青,,经验了各类进攻检验。RSA的安详性主要依赖大数解析,优势是秘钥长度可以增加到任意长度。RSA运算方法造成了签名内容假如较短,会被很容易修改为进攻者想要的内容,所以一般还需要将签名内容举办一次哈希运算,并填充至和私钥差不多的长度。另外,跟着计较本领的增长,为防备被破解,秘钥长度也需要不绝增长,今朝认为安详的秘钥长度是2048bit。同时RSA的私钥生成需要两个质数的组合,因此寻找更长私钥的计较速度也更慢。

    加密也用到单向门的特性将随机数埋没,详细流程为:

    1. 按照发送方传输的S(x"',y"'),R(x',y')和吸收方本身的私钥k,计较S(x"',y"') - k * R(x',y')还原M(x",y");

      1. 取随机数r,计较椭圆曲线乘法:r * G(x,y) = R(x',y');

      2. 将动静m编码到椭圆曲线上,获取椭圆曲线上的点M(x",y");

      需要留意的是第三步s的计较是数值计较,操作随机数埋没私钥,并非哈希或椭圆曲线乘法这种单向性的运算。因此每次签名随机数r必需改换,不然对差异信息用沟通的随机数签名就可以推算出私钥,并且随机数r的质量将影响私钥的保密性。

      验签是通过公钥K(x',y')、动静哈希h和签名值(Rx,s)来推算签名值是否由公钥K对应的私钥k签名。验签的进程为:

      1.3.1 私钥签名

      1.2椭圆曲线数字签名

      = h * G / s + Rx * (k * G) / s = (h + k * Rx)G / s 

    2. 验证R‘x是否便是Rx。

      = r * G

      1.1 RSA数字签名

      签名算法最主要的思路就是操作算法的单向性,使私钥和随机数被埋没起来,然后用果真信息计较得到一致的功效来验证签名的有效性。

      私钥解密是通过加密内容,随机点R和私钥k来还原出编码M的进程,详细流程为:

      郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

  • 说点什么吧
    • 全部评论(0
      还没有评论,快来抢沙发吧!

    相关文章阅读