• 学习笔记——SM2算法原理及实现


    RSA算法的危机在于其存在亚指数算法,对ECC算法而言一般没有亚指数攻击算法

    SM2椭圆曲线公钥密码算法:我国自主知识产权的商用密码算法,是ECC(Elliptic Curve Cryptosystem)算法的一种,基于椭圆曲线离散对数问题,计算复杂度是指数级,求解难度较大,同等安全程度要求下,椭圆曲线密码较其他公钥算法所需密钥长度小很多。

    ECC算法描述:

      1、用户A选定一条适合加密的椭圆曲线Ep(a,b)(如:y2=x3+ax+b),并取椭圆曲线上一点,作为基点G。
      2、用户A选择一个私有密钥k,并生成公开密钥(公钥PB)K=kG。
      3、用户A将Ep(a,b)和点(公钥)K,G传给用户B。
      4、用户B接到信息后 ,将待传输的明文(M)编码到Ep(a,b)上一点M,并产生一个随机整数r(r<n)。加密开始
      5、用户B计算点C1=M+rK;C2=rG。
      6、用户B将C1、C2传给用户A。
      7、用户A接到信息后,计算C1-kC2,结果就是点M。因为C1-kC2=M+rK-k(rG)=M+rK-r(kG)=M
      再对点M进行解码就可以得到明文。

      密码学中,描述一条Fp上的椭圆曲线,常用到六个参量:
      T=(p,a,b,G,n,h)。
      (p 、a 、b 用来确定一条椭圆曲线,G为基点,n为点G的阶,h 是椭圆曲线上所有点的个数m与n相除的整数部分)

      这几个参量取值的选择,直接影响了加密的安全性。参量值一般要求满足以下几个条件:

      1、p 当然越大越安全,但越大,计算速度会变慢,200位左右可以满足一般安全要求;

      2、p≠n×h;

      3、pt≠1 (mod n),1≤t<20;
      4、4a3+27b2≠0 (mod p);
      5、n 为素数;
      6、h≤4。

  • 相关阅读:
    使用java.util.Properties类读写配置文件
    maven配置文件setting.xml字段注释
    使用Nexus搭建Maven代理仓库
    Memcached 内存管理详解
    Memcached常用命令及使用说明
    使用NTP协议服务器时间同步
    Eclipse打JAR包的使用
    Eclipse插件的各种安装方法
    Java中代理对象的使用小结
    tp5框架成功、失败提示模板修改
  • 原文地址:https://www.cnblogs.com/smy87/p/7919208.html
Copyright © 2020-2023  润新知