tweetnacl library提供了两种生成公钥和密钥对的功能:crypto_box_keypair(pk,sk);
和crypto_sign_keypair(pk,sk);
:
第一个函数初始化要用于的密钥对
使用crypto_box(c,m,mlen,n,pk,sk);
API加密消息
稍后使用crypto_box_open(c,n,pk,sk)
函数解密这些。
好的示例代码似乎很难找到。 Here is one
库libsodium,它是基于NaCl的tweetnacl。
然而,第二个函数初始化可用于的密钥对
使用crypto_sign(sm,&smlen,m,mlen,sk);
API和消息来签名消息
稍后使用crypto_sign_open(m,&mlen,sm,smlen,pk);
在查看密钥生成代码时,我发现在两种情况下密钥生成都以256位随机数开始,但产生的不同
公钥到底。事实上,返回的512位签名sk
密钥包含公共密钥pk
的副本,所以说上半部分。
我查看了所有可以找到的文档并不多。 目前我得出的结论是,没有适当的方法可以为两个设施使用相同的单个密钥对。我是对的吗?
答案 0 :(得分:0)
它们不是同一种密钥对。两者的密钥生成可以从32字节种子开始,但两种类型的密钥对中生成的公钥和私钥之间的关系是不同的,因此您不能互换使用它们。私有签名密钥包含其公钥的事实与此事无关。