tweetnacl api和不同的密钥对

时间:2016-02-23 14:45:10

标签: c digital-signature public-key-encryption

tweetnacl library提供了两种生成公钥和密钥对的功能:crypto_box_keypair(pk,sk);crypto_sign_keypair(pk,sk);

  1. 第一个函数初始化要用于的密钥对 使用crypto_box(c,m,mlen,n,pk,sk); API加密消息 稍后使用crypto_box_open(c,n,pk,sk)函数解密这些。 好的示例代码似乎很难找到。 Here is onelibsodium,它是基于NaCl的tweetnacl。

  2. 然而,第二个函数初始化可用于的密钥对 使用crypto_sign(sm,&smlen,m,mlen,sk); API和消息来签名消息 稍后使用crypto_sign_open(m,&mlen,sm,smlen,pk);

  3. 验证签名

    在查看密钥生成代码时,我发现在两种情况下密钥生成都以256位随机数开始,但产生的不同 公钥到底。事实上,返回的512位签名sk密钥包含公共密钥pk的副本,所以说上半部分

    我查看了所有可以找到的文档并不多。 目前我得出的结论是,没有适当的方法可以为两个设施使用相同的单个密钥对。我是对的吗?

1 个答案:

答案 0 :(得分:0)

它们不是同一种密钥对。两者的密钥生成可以从32字节种子开始,但两种类型的密钥对中生成的公钥和私钥之间的关系是不同的,因此您不能互换使用它们。私有签名密钥包含其公钥的事实与此事无关。