2

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

  1. 发送者在 [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 是身份验证标签。但是,在示例中,它们没有被检索到,我不知道它们是如何检索的。

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

4

1 回答 1

0

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

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

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

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

只需按照上述说明解析数据即可。

于 2021-03-22T03:31:07.887 回答