我正在尝试创建基于加密钢的确定性GPG密钥。我已经实现了一个用于(反)序列化PGP数据包的库,现在我正在尝试使用library中生成的密钥用于GPG中的导入。
给我一个32字节的公钥和一个32字节的密钥。这也是PGP似乎所使用的-除了PGP前缀0x40的公共密钥,以表明它没有使用点压缩(从而变成33个字节)。
当试图导入生成的密钥GPG时,ed25519键工作得很好,但是curve25519键不起作用--尽管没有指定KDF。看来,利伯钠产生的点与GPG不兼容。
一些随机的事情我不明白,这可能与此有关:- GPG点是32个字节,但它们是未压缩的。那么它们不应该是32 + 32字节吗?从我所能读到的来看,X和Y都应该是32字节。- using可能使用压缩点,但它们的点数不以02或03开头--我所读到的是用来表示哪个Y作为密钥。它们也是32个字节,如果考虑额外的字节来表示压缩,那么这个字节也会太小。
有人知道这些曲线之间到底有什么不同吗?我能做些什么来修复它?
发布于 2019-01-14 10:01:23
找到了解决办法。所需要的就是反转curve25519秘密点中的字节。显然,PGP在这方面使用的是小端,而ed25519则使用大端。
https://crypto.stackexchange.com/questions/66415
复制相似问题