美文网首页
ECC 关于加密解密的一些误区

ECC 关于加密解密的一些误区

作者: CheckRan | 来源:发表于2018-05-21 14:59 被阅读515次

    ECC (椭圆曲线算法)

    使用的为iOS 平台下使用 OpenSSL('OpenSSL-Universal', '1.0.1.17') 来实现的

    加密

    私钥签名,公钥验签
    签名方法在 openssl库 ecdsa.h

    签名
    ECDSA_SIG * ECDSA_do_sign(const unsigned char *dgst, int dgst_len,
                             EC_KEY *eckey);
    验签
    int ECDSA_do_verify(const unsigned char *dgst, int dgst_len,
                        const ECDSA_SIG *sig, EC_KEY *eckey);
    

    公钥加密,私钥解密???
    没有看到有这一块的实现,
    只看生成一个秘钥,用其私钥和自己的公钥生成一个新的秘钥,用其做AES
    ecdh.h(椭圆曲线密钥交换算法)

    生成新的秘钥
    EC_KEY newKey = EC_KEY_new_by_curve_name(EC_GROUP_get_curve_name(EC_KEY_get0_group(myEcKey)));
    EC_KEY_generate_key(newKey);
    
    和myEcKey的publickey做 ecdh.h 的 compute
    ECDH_compute_key( , , EC_KEY_get0_public_key(myEcKey), newKey ,  KEY_HASH_FUNCTION);
    保存 newKey 的publicKey,其私钥丢掉
    Save( EC_KEY_get0_public_key(newKey));
    
    获得密钥的时候调用:
    EC_POINT epnt = EC_POINT_new(EC_KEY_get0_group(myEcKey));
    EC_POINT_oct2point(egrp, epnt, @LoadSaveKey ));
    ECDH_compute_key(,,epnt, myEcKey,  KEY_HASH_FUNCTION);
    

    每次使用的时候,都生成一个新的秘钥对,私钥使用一次后丢掉,公钥传输给Other,
    Other 通过自己的私钥和传输过来的公钥可以计算出 AES 的秘钥

    相关文章

      网友评论

          本文标题:ECC 关于加密解密的一些误区

          本文链接:https://www.haomeiwen.com/subject/nyifjftx.html