C TweetAPI和不同的密钥对

C TweetAPI和不同的密钥对,c,digital-signature,public-key-encryption,C,Digital Signature,Public Key Encryption,提供两个函数来生成公钥和私钥对:crypto\u box\u密钥对(pk,sk)和密码密钥对(pk,sk): 第一个函数初始化用于 使用加密框(c、m、mlen、n、pk、sk)加密消息API和到 稍后使用crypto\u box\u open(c,n,pk,sk)函数解密这些文件。 好的示例代码似乎很难找到。对于 基于NaCl的库 但是,第二个函数初始化可用于 使用加密符号(sm、smlen、m、mlen、sk)对消息进行签名API和 随后使用crypto\u sign\u open(m,&m

提供两个函数来生成公钥和私钥对:
crypto\u box\u密钥对(pk,sk)
密码密钥对(pk,sk)

  • 第一个函数初始化用于 使用
    加密框(c、m、mlen、n、pk、sk)加密消息API和到
    稍后使用
    crypto\u box\u open(c,n,pk,sk)
    函数解密这些文件。 好的示例代码似乎很难找到。对于 基于NaCl的库

  • 但是,第二个函数初始化可用于 使用
    加密符号(sm、smlen、m、mlen、sk)对消息进行签名API和
    随后使用
    crypto\u sign\u open(m,&mlen,sm,smlen,pk)验证签名

  • 在查看密钥生成代码时,我发现在这两种情况下,密钥生成都以256位随机数开始,但生成的结果不同 最后是公钥。事实上,返回的512位签名
    sk
    密钥在其所谓的上半部分包含公钥
    pk
    的副本

    我已经查阅了我能找到的所有文档,这些文档并不多。
    目前我得出的结论是,对于这两种设施,没有合适的方法使用同一个密钥对。我说得对吗?

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

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

    将密钥用于多种用途可能会使您的系统面临严重的攻击。始终将密钥用于其预期的单一用途。此问题的背景是:要对从其他人接收的公钥建立信任,必须验证这是原始公钥(通过其他方式)。例如,钥匙的主人可以将钥匙的十六进制表示形式写在纸上,然后交给某人。当然,这是一个困难的过程。因此,如果这样一个密钥对可以用于两种操作,例如PGP中的操作,或者您可以为两种不同的用例生成两个密钥对,这将是非常有用的。将密钥用于多种用途可能会使您的系统面临严重的攻击。始终将密钥用于其预期的单一用途。此问题的背景是:要对从其他人接收的公钥建立信任,必须验证这是原始公钥(通过其他方式)。例如,钥匙的主人可以将钥匙的十六进制表示形式写在纸上,然后交给某人。当然,这是一个困难的过程。因此,如果这样的密钥对可以用于两种类型的操作,例如在PGP中,或者您可以为两种不同的用例生成两个密钥对,这是非常有用的。