zoukankan      html  css  js  c++  java
  • *crypto*练2--攻防世界--easy_ECC

    利用工具ECCTOOL解题

    下载链接:https://bbs.pediy.com/thread-66683.htm

     ECC相关原理

    一般情况下,椭圆曲线可用下列方程式来表示,其中a,b,c,d为系数。

    椭圆曲线基础理解:

    E:y2=ax3+ bx2+cx+d加法

    过曲线上的两点AB画一条直线,找到直线与椭圆曲线的交点,交点关于x轴对称位置的点,定义为A+B,即为加法。如下图所示:A + B = C

     

    二倍运算

    上述方法无法解释A + A,即两点重合的情况。因此在这种情况下,将椭圆曲线在A点的切线,与椭圆曲线的交点,交点关于x轴对称位置的点,定义为A + A,即2A,即为二倍运算。



    椭圆曲线加密:

    假设椭圆曲线为y² = x³ + x + 1,其在有限域GF(23)上时,写作:  y² ≡ x³ + x + 1 (mod 23)

    此时,椭圆曲线不再是一条光滑曲线,而是一些不连续的点,如下图所示。以点(1,7)为例,7² ≡ 1³ + 1 + 1 ≡ 3 (mod 23)。如此还有如下点:

    (0,1) (0,22)  (1,7) (1,16)  (3,10) (3,13)  (4,0)  (5,4) (5,19)  (6,4) (6,19)  (7,11) (7,12)  (9,7) (9,16)  (11,3) (11,20)  等等。

    另外,如果P(x,y)为椭圆曲线上的点,则-P(x,-y)也为椭圆曲线上的点。如点P(0,1)-P=(0,-1)=(0,22)也为椭圆曲线上的点。

    考虑K=kG ,其中KG为椭圆曲线Ep(a,b)上的点,nG的阶(nG=O∞ ),k为小于n的整数。则给定kG,根据加法法则,计算K很容易但反过来,给定KG,求k就非常困难。因为实际使用中的ECC原则上把p取得相当大,n也相当大,要把n个解点逐一算出来列成上表是不可能的。这就是椭圆曲线加密算法的数学依据

    G称为基点(base point

    kk<n)为私有密钥(privte key

    K为公开密钥(public key)

    公钥加密:选择随机数r,将消息M生成密文C,该密文是一个点对,即:C = {rG, M+rK},其中K为公钥

    私钥解密:M + rK - k(rG) = M + r(kG) - k(rG) = M  其中kK分别为私钥、公钥。

     

  • 相关阅读:
    js 中的基本包装类型
    js监听浏览器,关闭,刷新(兼容IE6+,Firefox,Chrome,Safari)
    js 中的 && 与 ||
    程序设计模式的工厂(Factory)模式
    关于MOSS首页不能打开提示“根级别上的数据无效
    获取汉字的拼音的首个字母方法
    XmlDocument扩展类
    初次体验Android,过程很艰辛!
    用Python写个翻译工具
    开发经验是修炼设计模式的基石
  • 原文地址:https://www.cnblogs.com/kubopiy/p/13462525.html
Copyright © 2011-2022 走看看