【问题标题】:How to use Crypto++ for ECIES and retrieve common secret, authentication tag and ciphertext如何将 Crypto++ 用于 ECIES 并检索公共秘密、身份验证标签和密文
【发布时间】:2020-10-09 15:10:49
【问题描述】:

我正在尝试使用crypto++ wiki 中的示例进行 ecies 加密,它符合 IEEE P1363 的方案版本。 ETSΙ ΤS 102 941 v1.3.1 标准中描述的方案的前两个步骤是:

  1. Sender 在 [1, q-1], ...中生成一个临时私钥 r,...

  2. 发送方从接收方加密公钥 Kr 中导出一个共享秘密 S。 S = Px,其中 ...

但是,在 crypto++ 示例中,第一行是:

    ECIES<ECP>::Decryptor d0(prng, ASN1::secp256r1());
    PrintPrivateKey(d0.GetKey());

    ECIES<ECP>::Encryptor e0(d0);
    PrintPublicKey(e0.GetKey());

它使用私有的解密器并将加密器基于它。我看不出它与算法的步骤是如何匹配的。

此外,wiki 声明加密函数返回一个元组 {K,C,T},其中 K 是加密的公共秘密,C 是密文,T 是身份验证标签。 但是,在示例中,它们没有被检索到,我不知道它们是如何检索到的。

任何见解和帮助将不胜感激。谢谢!

【问题讨论】:

    标签: c++ cryptography crypto++ ecies


    【解决方案1】:

    加密函数的输出是元组{K,C,T},其中K是加密后的公共秘密,C是密文,T是认证标签。

    K 长度为 64。 T 长度为 32。 C长度为明文长度。

    如果输出字符串 em0 为 K+C+T (假码)

    em0.length()-message.length() = 97
    97+C_len = 04(fixed) + 64(K_len) + C(C_len) + 32( T_len).
    

    按照上面的说明解析数据即可。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-03
    • 2011-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-27
    相关资源
    最近更新 更多