【问题标题】:Number of Characters representing a 160 bit ECC Public and private keys代表 160 位 ECC 公钥和私钥的字符数
【发布时间】:2013-01-21 15:43:47
【问题描述】:

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

公钥和私钥的比特大小(因此字符大小)是否相同?

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

【问题讨论】:

  • 您能否提供公钥和私钥(测试版本)的十六进制转储?是否以十六进制 30 开头?
  • 感谢您的回答,虽然没有完全回答我的问题。我运行了一个使用 ECDH (secp160k1) 生成公钥和私钥的应用程序。据我了解,我希望公钥有 20 个字节,并且表示它的确切字符数会根据密钥是以十六进制编码还是 base64 编码而有所不同。谢谢你的回答,但我需要清楚地解释这些键是如何表示的。
  • 现在应用程序生成 base64 格式的公钥。
  • 公钥包含 86 个字符和 2 个等号 (==),总共 88 个字符。表示使用 secp160k1 曲线生成的公钥的字符数是否正确?
  • 是否以字母“M”开头?

标签: cryptography


【解决方案1】:

私钥确实是 160 位整数。 公钥是曲线上的一个点,通常由坐标 x 和 y 表示,各 160 位。所以公钥总共有 320 位。

【讨论】:

  • 可以使用点压缩将公钥减少到 161 位。但根据曲线形式,如果这样做,您可能会在美国遇到专利问题。
  • 这是最低要求,没有点压缩,但有 ASN.1 规范,甚至可能包括域参数(这意味着至少 7 * 密钥大小 + 开销)。
  • 通常在 ASN.1 参数中存储曲线 OID。并不是所有的实现都支持参数曲线指定的。
猜你喜欢
  • 2016-09-20
  • 2016-09-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-30
  • 1970-01-01
  • 2013-07-09
  • 1970-01-01
相关资源
最近更新 更多