精华内容
下载资源
问答
  • Java bouncycastle 包实现椭圆曲线计算

    千次阅读 2019-10-28 13:54:21
    Java bouncycastle 包实现椭圆曲线计算说明示例代码 说明 最近项目需要使用椭圆曲线实现ECDHE秘钥协商算法,然后遇到了一些坑,在这里做个记录 示例代码 引入依赖 <dependency> <groupId>org.bouncy...

    Java bouncycastle 包实现椭圆曲线计算

    说明

    最近项目需要使用椭圆曲线实现ECDHE秘钥协商算法,然后遇到了一些坑,在这里做个记录

    示例代码

    引入依赖

    <dependency>
        <groupId>org.bouncycastle</groupId>
        <artifactId>bcpkix-jdk15on</artifactId>
        <version>1.62</version>
        <scope>provided</scope>
    </dependency>
    

    其实计算的过程就是参考公司钥对生成的过程。
    公私钥对的生成代码如下:

    @Test
    public void case6() throws Exception{
    
        // 曲线参数
        X9ECParameters ecp = SECNamedCurves.getByName("secp256r1");
        ECDomainParameters domainParameters = new ECDomainParameters(ecp.getCurve(), ecp.getG(), ecp.getN(), ecp.getH(), ecp.getSeed());
    
        // 生成公私钥对
        AsymmetricCipherKeyPair keyPair;
        ECKeyGenerationParameters keyGenerationParameters = new ECKeyGenerationParameters(domainParameters, new SecureRandom());
        ECKeyPairGenerator generator = new ECKeyPairGenerator();
        generator.init(keyGenerationParameters);
        keyPair = generator.generateKeyPair();
    
        ECPublicKeyParameters publicKeyParameters = (ECPublicKeyParameters) keyPair.getPublic();
        ECPrivateKeyParameters privateKeyParameters = (ECPrivateKeyParameters) keyPair.getPrivate();
    
    }
    

    然后,就是去源码中看,随机生成私钥,然后 私钥 与 基点相乘

    @Test
    public void case5() throws Exception{
    
        // 曲线参数
        X9ECParameters ecp = SECNamedCurves.getByName("secp256r1");
        ECDomainParameters domainParameters = new ECDomainParameters(ecp.getCurve(), ecp.getG(), ecp.getN(), ecp.getH(), ecp.getSeed());
    
        // 生成公私钥对
        AsymmetricCipherKeyPair keyPair;
        ECKeyGenerationParameters keyGenerationParameters = new ECKeyGenerationParameters(domainParameters, new SecureRandom());
        ECKeyPairGenerator generator = new ECKeyPairGenerator();
        generator.init(keyGenerationParameters);
        keyPair = generator.generateKeyPair();
    
        ECPublicKeyParameters publicKeyParameters = (ECPublicKeyParameters) keyPair.getPublic();
        ECPrivateKeyParameters privateKeyParameters = (ECPrivateKeyParameters) keyPair.getPrivate();
    
        BigInteger privateKey = privateKeyParameters.getD();
    
        System.out.println("privateKey: "+privateKey.toString(16));
        System.out.println("publicKey x: "+publicKeyParameters.getQ().getXCoord().toBigInteger().toString(16));
        System.out.println("publicKey y: "+publicKeyParameters.getQ().getYCoord().toBigInteger().toString(16));
    
        ECPoint Q = keyGenerationParameters.getDomainParameters().getG().multiply(privateKey);
        // 好像在 1.60 版本之前不需要这一步, 这个搞了我好久
        Q = ECAlgorithms.importPoint(Q.getCurve(), Q).normalize();
    
        System.out.println(" multiply x: " + Q.getXCoord().toBigInteger().toString(16));
        System.out.println(" multiply y: " + Q.getYCoord().toBigInteger().toString(16));
    
    }
    

    输出结果

    privateKey: 8e9c71edc91829c302b55e16ca39d63f0c76b946908e4a8dd49b1d17d30d8fcc
    publicKey x: a731d1b4ba06232941f35f2c5ebb3c4c4343b94cff3433f5efd0eba0541ff666
    publicKey y: 9f60476948ce2718a3a92ad32a5185cdf43f9903ce028e37b95142cc4c53def0
     multiply Q: a731d1b4ba06232941f35f2c5ebb3c4c4343b94cff3433f5efd0eba0541ff666
     multiply Q: 9f60476948ce2718a3a92ad32a5185cdf43f9903ce028e37b95142cc4c53def0
    
    展开全文
  • VB实现椭圆曲线倍点计算VB实现椭圆曲线倍点计算VB实现椭圆曲线倍点计算VB实现椭圆曲线倍点计算VB实现椭圆曲线倍点计算VB实现椭圆曲线倍点计算VB实现椭圆曲线倍点计算
  • 定义与基础运算 有限域椭圆曲线定义 Ep(a, b)表示椭圆曲线方程y**2 = x**3 + a*x + b,在有限域Fp中,表示所有在同余意义上满足该方程的(x, y)点,例如下图:(图片来自网络)...有限域椭圆曲线计算关系 椭圆曲线...

    定义与基础运算

    有限域椭圆曲线定义

    Ep(a, b)表示椭圆曲线方程y**2 = x**3 + a*x + b,在有限域Fp中,表示所有在同余意义上满足该方程的(x, y)点,例如下图:(图片来自网络)
    在这里插入图片描述
    对椭圆曲线E23(1, 1),点P(3, 10)满足y**2 = 100 = 31 = x**3 + x + 1 (mod 23),故点P(3, 10)在曲线上

    有限域椭圆曲线计算关系

    椭圆曲线上两点P(x1, y1)和Q(x2, y2)的计算关系如下:
    (1) -P:-P = (x1, -y1) = (x1, p-y1)
    (2) P+Q:首先需要计算参数k,定义为:
    当P=Q时,k = (3*x1**2+a) / (2*y1) = (3*x1**2+a) * inv((2*y1), p) (mod p)
    当P!=Q时,k = (y2-y1) / (x2-x1) = (y2-y1) * inv((x2-x1), p) (mod p)
    然后计算x3, y3满足
    x3 = k2 - x1 - x2 (mod p)
    y3 = k * (x1 - x3) - y1 (mod p)
    定义为P(x1, y1) + Q(x2, y2) = R(x3, y3)

    例题:

    已知椭圆曲线E23(1, 1)上两点P(3, 10),Q(9, 7),求(1) -P,(2)P+Q,(3)2P

    解答:

    (1) -P = (3, -10) (mod 23) = (3, 13)
    (2) k = (7-10) * inv((9-3), 23) (mod 23) = (-3) * 4 (mod 23) = 11
    x3 = k2 - x1 - x2 (mod p) = 109 (mod 23) = 17
    y3 = k * (x1 - x3) - y1 (mod p) = 89 (mod 23) = 20,P + Q = (17, 20)
    (3) k = (3*3**2+1) * inv((2*10), 23) (mod 23) = 5 * 15 (mod 23) = 6
    x3 = k2 - x1 - x2 (mod p) = 30 (mod 23) = 7
    y3 = k * (x1 - x3) - y1 (mod p) =-34 (mod 23) = 12,2P = (7, 12)

    有限域椭圆曲线的阶

    接下来定义有限域椭圆曲线的阶。对于曲线上一点P,若存在最小的正整数n,使得nP = O(无穷远点),则称n为P的阶。例如,在曲线E23(1, 1)中,点P(3, 13)可计算的27P = (3, -13) = -P,因此28P = O,P的阶为28。所有形如kP的点构成了一个循环阿贝尔群,其阶数为29,其中生成元为P,如下图所示:(图片来自网络)
    在这里插入图片描述
    可见这些点分布是杂乱无章的,利用这一性质诞生出椭圆曲线加密的算法

    有限域椭圆曲线加密算法

    考虑K = kG,其中K、G为椭圆曲线Ep(a, b)上的点,n为G的阶(即nG = O),k为小于n的整数。根据加法法则,给定k、G计算K很容易;但反过来给定K、G,计算k则非常困难。实际使用中,p与n都会相当大,因此把n个解点逐一算出来是不可能的。上述描述中,称G为基点,k为私有密钥,K为公开密钥。通信算法如下:

    • 1.Alice选定一条椭圆曲线E,并取椭圆曲线上一点作为基点G 假设选定E29(4,20),基点G(13,23) , 基点G的阶数n=37
    • 2.Alice选择一个私有密钥k(k<n),并生成公开密钥K=kG
      例如k = 25,K= kG = 25G = (14,6)
    • 3.Alice将E和点K、G传给Bob
    • 4.Bob收到信息后,将待传输的明文编码到上的一点M(编码方法略),并产生一个随机整数r(r<n,n为G的阶数)
      例如r=6,要加密的信息为m=3,因为M也要在E29(4,20)上,所以M=(3,28)
    • 5.Bob计算点C1=M+rK和C2=rG
      C1 = M + 6K = M + 6 * 25 * G = M + 2G = (3,28) + (27,27) = (6,12)
      C2 = 6G = (5,7)
    • 6.Bob将C1、C2传给Alice
    • 7.Alice收到信息后,计算C1-kC2,结果就是点M
      C1 - kC2 = (6,12) - 25C2 = (6,12) - 25 * (5,7)
      = (6,12) - (27,27) = (6,12) + (27,2) = (3,28)

    可以这样做的原因是:
    C1 - kC2 = M + rK - krG = M + rkG - krG = M
    通常将Fp上的一条椭圆曲线描述为T=(p,a,b,G,n,h)。其中p、a、b确定一条椭圆曲线;G为基点;n为点G的阶;h是椭圆曲线上所有点的个数m与n相除的商的整数部分。

    例题:

    已知椭圆曲线加密Ep(a,b)参数为
    p = 15424654874903,a = 16546484,b = 4548674875,
    G(6478678675,5636379357093),私钥为k = 546768,求公钥K(x,y)

    解答:

    主要功能代码部分见下:

    #!/usr/bin/python
    #encoding=utf-8
    from gmpy2 import invert
    
    def ECCnegative(x, y, p):
        return x, p-y
    
    def ECCadd(x1, y1, x2, y2, p, a):
        if(x1==x2):
            if((y1+y2)%p==0):
                return -1, -1 # infinity return
            elif(y1!=y2):
                print ("Input Error, Please check the input!")
                return -2, -2 # error input return
            else:
                k = ((3 * x1 * x1 + a) * invert(2 * y1, p)) % p
                x3 = (k * k - x1 - x2) % p
                y3 = (k * (x1 - x3) - y1) % p
                return int(x3), int(y3)
        else:
            k = ((y2 - y1) * invert(x2 - x1, p))%p
            x3 = (k * k - x1 - x2) % p
            y3 = (k * (x1 - x3) - y1) % p
            return int(x3), int(y3)
    
    def ECCmul(k, x, y, p, a):
        tempx, tempy = -1, -1
        nowx, nowy = x, y
        while(k != 0):
            mark = k & 1
            k = k >> 1
            if(mark == 1):
                if(tempx == -1):
                    tempx, tempy = nowx, nowy
                else:
                    tempx, tempy = ECCadd(tempx, tempy, nowx, nowy, p, a)
            nowx, nowy = ECCadd(nowx, nowy, nowx, nowy, p, a)
        return tempx, tempy
    

    结果为(13957031351290, 5520194834100)
    (备注:本题为XUSTCTF2016原题,网上部分公开的代码是错误的,因为里边一个写法问题,导致and判断被当成了与运算,如下所示:
    print (-1<0 & -1<0) False(代码中写法)
    print (-1<0 and -1<0) True(正确写法)
    在xctf平台刷题的时候请注意需要填写错误答案)

    展开全文
  • 3)上的椭圆曲线,因为素域FpF_pFp​的特征不为2,3,所以素域FpF_pFp​上的椭圆曲线E的WeierstrassWeierstrassWeierstrass方程可设为 E:y2=x3+a4x+a6 E: y^2 = x^3 + a_4x + a_6 E:y2=x3+a4​x+a6​ 其判别式Δ=−16...

    公式定理

    这里我们仅考虑素域Fp(p>3)F_p(p>3)上的椭圆曲线,因为素域FpF_p的特征不为2,3,所以素域FpF_p上的椭圆曲线E的WeierstrassWeierstrass方程可设为
    E:y2=x3+a4x+a6 E: y^2 = x^3 + a_4x + a_6

    其判别式Δ=16(4a43+27a62)0\Delta=-16(4a_4^3+27a_6^2)\neq0,其在FpF_p上的运算规则如下:

    P1=(x1,y1)P_1 = (x_1, y_1)P2=(x2,y2)P_2 = (x_2, y_2),是曲线E上的两个点,O为无穷远点,则

    • O+P1=P1+OO+P_1 = P_1 + O

    • P1=(x1,y1)-P1 = (x_1, -y_1)

    • 如果P3=(x3,y3)=P1+P2OP_3 = (x_3, y_3) = P_1 + P2 \neq O

    椭圆的阶为
    #(E(Fp))=1+x=0p1(1+(x3+a4x+a6p))=p+1+x=0p1(x3+a4x+a6p) \#(E(F_p)) = 1+\sum^{p-1}_{x=0}({1+(\frac{x_3+a_4x+a_6}{p})}) = p+1+\sum^{p-1}_{x=0}{(\frac{x_3+a_4x+a_6}{p})}


    F17线E:y2=x3+2x+3F_{17}上的椭圆曲线E:y^2=x^3+2x+3,为例

    如何求解椭圆上所有的点?

    遍历x=0,1,2,...,p1x=0,1,2,...,p-1,求出所有的点,比如

    x=0y2=3(mod17)x=0,y^2=3(mod17),此时无解
    x=1y2=6(mod17)x=1,y^2=6(mod17),此时无解
    x=2y2=15(mod17)y=7,8(mod17)x=2,y^2=15(mod17),y=7,8(mod17)
    ......
    求出所有点之后,还要记得将无穷远点OO加入


    如何根据已知点,求第三点

    比如,已知P=(2,7)Q=(11,8)EP+Q=(x3,y3)P=(2,7) 和 Q=(11,8)在椭圆E上,求解P+Q=(x_3, y_3)

    根据公式有 λ=y2y1x2x1=87112=19\lambda=\frac{y_2-y_1}{x_2-x_1}=\frac{8-7}{11-2}=\frac{1}{9}

    这里需要注意一下,λ\lambdaF17F_{17}中,所以实际上应该要求19(mod17)\frac{1}{9}(mod17)

    那么只需要知道如何求解分数的模即可,设 a,bab1(modp)a, b 满足ab \equiv1 (modp),那么则有1a(modp)=b(modp)\frac{1}{a}(modp)=b(modp)

    结合题目,所以我们只需要求出aa满足9a1(mod17)9a\equiv1(mod17)即可,根据贝祖等式原理即可求出 a=2a=2,所以

    λ=19=1×2(mod17)=2\lambda=\frac{1}{9}=1\times2(mod17)=2

    所以x3=λ2x1x2=8,y3=λ(x1x3)y1=15x_3=\lambda^2-x_1-x_2=8, y_3 = \lambda(x_1-x_3)-y_1=15

    9a1mod179a\equiv1mod17的具体求法如下

    n s t q r
    -2 17( p )
    -1 1(固定) 0(固定) 9(要求的)
    0 0(固定) 1(固定) 1(17/9的商) 8(17/9余数)
    1 1(qn1sn1+sn2-q_{n-1}s_{n-1}+s_{n-2}) -1(qn1tn1+tn2-q_{n-1}t_{n-1}+t_{n-2}) 1(9/8的商) 1(9/8的余数)
    2 -1 2 8(8/1的商) 0(8/1的余数,为0停止运算)

    比如n=2的时候, sn=1×1+0=1tn=1×(1)+1=2s_n=-1\times1+0=-1,t_n=-1\times(-1)+1=2

    所以有1×17+2×9=1-1\times17+2\times9=1,则9×21(mod17)9\times2\equiv1(mod17)

    展开全文
  • 椭圆曲线

    2020-10-13 20:09:15
    椭圆曲线上的加法运算定义如下:如果椭圆曲线上的3个点位于同一直线上, 那么它们的和为O。从这个定义出发, 我们可以定义椭圆曲线的加法规则: 0为加法的单位元,对于椭圆曲线上的任何一点P,有P+O=P。 对于椭圆曲线....
    椭圆曲线上的加法运算定义如下:如果椭圆曲线上的3个点位于同一直线上,
    那么它们的和为O。从这个定义出发,
    我们可以定义椭圆曲线的加法规则:
    0为加法的单位元,对于椭圆曲线上的任何一点P,有P+O=P。
    对于椭圆曲线.上的一-点P=(X,y),
    ,它的逆元为P= ( x,-y)。注意到这里有P+ (- P) =P-P=O
    
    
    

    计算xG

    相关公式如下:

    有限域GF§上的椭圆曲线y² = x³ + ax + b,

    若P(Xp, Yp), Q(Xq, Yq),且P≠-Q,

    则R(Xr,Yr) = P+Q 由如下规则确定:

    Xr = (λ² - Xp - Xq) mod p

    Yr = (λ(Xp - Xr) - Yp) mod p

    其中

    λ = (Yq - Yp)/(Xq - Xp) mod p(若P≠Q),

    λ = (3Xp² + a)/2Yp mod p(若P=Q)

    因此,有限域GF(23)上的椭圆曲线y² ≡ x³ + x + 1 (mod 23),

    假设以(0,1)为G点,

    计算2G、3G、4G…xG等等,

    方法如下:

    计算2G:  λ = (3x0² + 1)/2x1 mod 23 = (1/2) mod 23 = 12  Xr = (12² - 0 - 0) mod 23 = 6  Yr = (12(0 - 6) - 1) mod 23 = 19  即2G为点(6,19)

    计算3G:  3G = G + 2G,即(0,1) + (6,19)  λ = (19 - 1)/(6 - 0) mod 23 = 3  Xr = (3² - 0 - 6) mod 23 = 3  Yr = (3(0 - 3) - 1) mod 23 = 13  即3G为点(3, 13)

    也就是说,当给定点P时,“已知数x求点xG的运算”不难,因为有加法的性质,运算起来可以比较快。但反过来,“已知点xG求x的问题”则非常困难,因为只能遍历每一个x做运算。这就是椭圆曲线密码中所利用的“椭圆曲线上的离散对数问题”。

    此处x即为私钥,xG即为公钥。

    椭圆曲线加密算法原理如下:

    椭圆曲线加密算法原理如下:
    
    设私钥、公钥分别为k、KG,其中G为G点。
    
    公钥加密:  选择随机数r,将消息M生成密文C,该密文是一个点对,即:  C = {rG, M+rKG},其中KG为公钥
    
    私钥解密:  M + rKG - k(rG) = M + r(kG) - k(rG) = M  其中k、KG分别为私钥、公钥。
    
    
    

    y2=x3+ax+b(mod   p)线Ea,b y^2=x^3+ax+b(mod\ \ \ p)\\ 由它确定的椭圆曲线常记E(a,b)

    平方剩余

    定义7.1.1设p是奇素数, 即大于2的素数,
    如果二次同余式
    x^2=a (mod p), (a,p)= 1
    有解,则a称为模p的平方剩余,否则a成为模p的平方非剩余.
    a是模p平方剩余的充分必要条件是
    a^(p-1/2) = 1(mod p)
    a是模p平方非剩余的充分必要条件是
    p-1
    a2
    =-
    1(mod p)
    
    
    

    杂凑函数(又称哈希函数)

    是认证和数字签名的基本组成部分。

    根据认证目的的不同,认证包括实体认证和消息认证
    两类。实体认证是验证信息发送者的合法性、真实性
    (身份认证) ,包括对信源、信宿的认证和识别(数据
    源认证) ;消息认证是验证信息的完整性,保证数据
    在传输或存储过程中未被篡改、重放。

    1.算法特点:不定长度输入,固定长度输出(如: MD5-16字节) 
    2.输入很小的变动可引起输出较大变动
    3.完全单向:已知输出无法推算出输入,已知两个输出的差别无法推算出输入的差别
    	//发送明文时将杂凑值发过去,有消息认证的功能	CRC
    	//
    
    杂凑码的分类
    
    校验和: Cyclic Redundancy Check (CRC)
    
    消息认证码: MAC算法是使用密钥的算法
    
    消息检测码:MDC是无密钥算法,进-步被分为单向Hash
    函数(one-way hash function, OWHF) 和抗碰撞Hash函数
    (collision res istant hash funct i on, CRHF) 。
    CRHF是更好的强单向Hash函数
    
    
    展开全文
  • 【密码学】ECC椭圆曲线加密

    千次阅读 2018-07-13 15:48:10
    有限域椭圆曲线计算 椭圆曲线加密(ECC) ECC参数选取 ECC与比特币 椭圆曲线加密,全称EllipseCurve Cryptography,简称ECC。与传统的基于大素数因数分解难题的方式不同,ECC通过椭圆曲线的方式产生密钥。在ECC...
  • 对超椭圆曲线上一类非退化的Ate对变种进行研究,使得计算双线性对的Miller算法的循环次数显著减少。通过对此类双线性对与改进Tate对及Ate对的关系的一系列证明,验证了此类双线性对的非退化性;基于广义的Ate对和...
  • 椭圆曲线的整数点加法的计算问题

    千次阅读 2019-06-03 11:36:43
    一、椭圆曲线的定义 椭圆曲线是域上亏格为1的光滑射影曲线。对于特征不等于2的域,它的仿射方程可以写成:y^2=x^3+ax^2+bx+c。复数域上的椭圆曲线为亏格为1的黎曼面。Mordell证明了整体域上的椭圆曲线是有限生成...
  • 椭圆曲线密码体制

    2021-04-01 14:53:28
    椭圆曲线计算方式1.1 椭圆曲线的定义1.2 椭圆曲线上的群操作2. 使用椭圆曲线构建离散对数问题3. 基于椭圆曲线的Diffie-Hellman密钥交换 椭圆曲线密码体制 椭圆曲线密码学(ECC)使用较短的操作数,可提供与RSA或...
  • 椭圆曲线加密

    2019-04-29 20:53:44
    椭圆曲线加密 椭圆曲线加密(ECC)最大的优点就是使用比RSA短得多的密钥得到相同的安全性,因此可以减少...在有限群上的椭圆曲线计算上没有显而易见的几何解释,但是可以将实数域上的椭圆曲线的几何解释移植过来...
  • 椭圆曲线乘法

    千次阅读 2018-03-14 20:20:30
    今天终于了解了一番神奇的非对称加密算法:椭圆曲线乘法为什么无法反推了,下面介绍一波. 1.椭圆曲线是一个二维的散点图 这里用NIST设立的一条椭圆曲线函数来介绍,因为这条曲线就是比特币使用的.这条曲线就是secp...
  • 传统加密方法大多基于大质数因子分解困难性来实现,ECC则是通过椭圆曲线方程式的性质来产生密钥。 ECC164位的密钥产生一个安全级,相当于RSA 1024位密钥提供的保密强度,而且计算量较小,处理速度更快,存储空间和...
  • 有趣的椭圆曲线加密

    2020-03-18 23:02:44
    椭圆曲线加密算法依赖于椭圆曲线理论,后者理论涵盖的知识比较深广,而且涉及数论中比较深奥的问题。经过数学家几百年的研究积累,已经有很多重要的成果,一些很棘手的数学难题依赖椭圆曲线理论得以解决(比如费马大...
  • 椭圆曲线密码算法

    千次阅读 2017-10-20 18:30:51
    椭圆曲线密码算法(Elliptic Curve Cryptography,ECC)是基于椭圆曲线数学的一种公钥密码算法,其安全性依赖于椭圆曲线离散对数问题的困难性。本文介绍了椭圆曲线密码算法的基本概念......
  • 椭圆曲线密码学导论pdf 历史 (History) The use of elliptic curves in cryptography was advised independently by Neal Koblitz and Victor S. Miller in 1985. Elliptic curve cryptography algorithms entered ...
  • 1985 年,Miller 和 Koblitz 各自独立的提出了椭圆曲线公钥密码[3],它是基于有限域上椭圆曲线构成加密体制,其安全性基于有限域上椭圆曲线离散对数问题(Elliptic Curve Discrete ...二是不存在计算椭圆曲线有限点群
  • 椭圆曲线密码学导论pdfElliptic curve cryptography is one of the most powerful but sadly least understood types of cryptography that is in wide use today. For those just looking for a quick answer: 椭圆...
  • SM2椭圆曲线

    千次阅读 2019-09-21 18:56:16
    实现SM2椭圆曲线公钥密码算法,对给出的英文消息进行加密得到密文,并能通过密文解密出明文。 环境 Windows10,MinGW-W64-builds-4.3.5,miracl 7.0.1 方案设计 背景 SM2椭圆曲线公钥密码算法,SM3密码杂凑算法 原理...
  • 椭圆曲线加解密

    千次阅读 2019-05-16 14:17:41
    椭圆曲线加密算法,即:Elliptic Curve Cryptography,简称ECC,是基于椭圆曲线数学理论实现的一种非对称加密算法。相比RSA,ECC优势是可以使用更短的密钥,来实现与RSA相当或更高的安全。据研究,160位ECC加密安全...
  • 1、已知点G=(2,7)在椭圆曲线E11(1,6)上,计算2G的值。 (1)已知椭圆曲线方程E11为:y2y^2y2=x3x^3x3+xxx+6(mod 11) (2)求G与曲线相切时的斜率(即求导),得到直线方程 (3)将直线方程代入曲线方程,解一个三次...
  • 椭圆曲线数字签名及验证 1.生成私钥和公钥 生成椭圆曲线对象 生成密钥对,返回私钥对象 编码生成公钥字节数组,参数是椭圆曲线、x坐标、y坐标 2.ECDSA数字签名 数字签名生成r、s的big.Int对象,参数是随机数、私钥、...
  • ECC椭圆曲线详解

    千次阅读 2019-05-07 18:45:49
    与传统的基于大质数因子分解困难性的加密方法不同,ECC通过椭圆曲线方程式的性质产生密钥 ECC164位的密钥产生一个安全级,相当于RSA 1024位密钥提供的保密强度,而且计算量较小,处理速度更快,存储空间和传输带宽...
  • 解密椭圆曲线签名

    千次阅读 2018-01-26 11:06:09
    今天终于了解了一番神奇的非对称加密算法:椭圆曲线乘法为什么无法反推了,下面介绍一波. 1.椭圆曲线是一个二维的散点图  这里用NIST设立的一条椭圆曲线函数来介绍,因为这条曲线就是比特币使用的.这条曲线就是secp...
  • 椭圆曲线介绍

    千次阅读 2014-04-13 21:50:28
    比特币使用椭圆曲线算法生成公钥和私钥,选择的是secp256k1曲线。与RSA(Ron Rivest,AdiShamir,Len Adleman三位天才的名字)一样,ECC(Elliptic Curves Cryptography,椭圆曲线加密)也属于公开密钥算法。 一、...
  • 【来源】:吉林大学学报 [著者文摘]:根据传统的Cantor算法,结合亏格为3的超椭圆曲线除子的特点,给出了其约化除子加法和翻倍运算的计算公式.实验结果表明,用公式导出的直接算法明显优于Cantor算法.
  • 简介 椭圆曲线加密法是一种基于离散对数问题的非对称(或公钥) 加密法, 可以用对椭圆曲线上的点进行加法或...计算方法:P1和P2之间画一条线,恰好与椭圆曲线上的一点相交,记此点为:P3’=(x,y),然后再x轴做映射的:

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 18,187
精华内容 7,274
关键字:

椭圆曲线计算