2013-01-21 40 views
1

任何人“出”在那里都可以帮助我了解表示160位椭圆曲线加密(ECC)的公钥和私钥的字符数?在我的理解中,我期望使用20个字节来表示这样一个关键字(例如public),并且当以base64和十六进制格式编码时,分别大致分别为27和40个字符。但令我惊讶的是,角色的数量比预期的要多。表示160位ECC公钥和私钥的字符数

公钥和私钥的位数(以及字符)是否具有相同的大小?

一些消息来源谈到了压缩和未压缩的公钥,但没有提供进一步的细节。任何帮助将不胜感激。

+0

你能否提供公钥和私钥的(测试版本)的十六进制转储?它是否以十六进制'30'开头? –

+0

谢谢你的答案,但没有完全回答我的问题。我运行了一个使用ECDH(secp160k1)生成公钥和私钥的应用程序。在我的理解中,我预计公钥有20个字节,表示它的字符的确切数量取决于密钥是以十六进制还是base64编码。谢谢你的答案,但我需要清楚说明这些密钥如何表示。 – user1997479

+0

现在,应用程序以base64格式生成公钥。 – user1997479

回答

1

私钥确实是160位整数。 公钥是曲线上的一个点,通常由坐标x和y表示,每个坐标为160位。因此公钥为320位。

+0

可以使用点压缩将公钥缩小为161位。但根据曲线形式,如果你这样做,你可以在美国遇到专利麻烦。 – CodesInChaos

+0

这是最小的,没有点压缩,但有ASN.1规范,甚至可能包括域参数(这意味着至少7 *密钥大小+开销)。 –

+1

通常在ASN.1参数中存储曲线OID。并非所有实现甚至支持由参数曲线指定。 –