【问题标题】:real means of 1024 bit key length in RSARSA中1024位密钥长度的实际方法
【发布时间】:2014-06-24 01:46:14
【问题描述】:

我正在学习 RSA 密码学,所以我必须了解 ke 长度。 Here,我找到了关于密钥长度方法的解释。

那里说:

当我们说“1024 位 RSA 密钥”时,我们的意思是模数有长度 1024 位,即大于 2^1023 但小于 2^1024 的整数。 这样的整数可以编码为 1024 位的序列,即 128 字节。

我从那里得到的,1024 位密钥意味着密钥有 1024 个二进制数序列。

我们都知道,1 字节 = 8 位。所以,1024 bits = 128 bytes。好的,它是二进制的。性格怎么样?

根据ASCII二进制码here,每个字符有8位二进制数。所以,在我看来,如果密钥有 1024 位长度,这意味着密钥包含 1024/8 = 128 个字符。因此,我创建了一个 java 程序来生成具有 128 数字长度的素数。到目前为止,该程序运行良好。

但是,我再次重新思考了 RSA 1024 位的真正含义。所以,我用谷歌搜索并找到了this。我测试了它,我得到公钥模数的位长度是 1024。但是,公钥有 309 数字长度。

现在,我真的很困惑。

我的问题:RSA 中 1024 位密钥长度的真正含义是什么?如我所想或如我所见here

【问题讨论】:

  • 你知道什么是二进制和十进制表示的数字以及它们之间的关系吗?
  • @OlegEstekhin 你的意思是如何将十进制数转换为二进制数,反之亦然?
  • 是的。以 2 为底(二进制)有 1024 位的数字将以 256 为底有 128 位,以 16 为底(十六进制)有 256 位,以 10 为底(十进制)有大约 309 位。
  • @OlegEstekhin 我对十六进制不太熟悉,但我知道二进制和十进制之间的关系。那么,优先级是什么?以 2 为底还是以 10 为底?
  • 无所谓,都是同一个数,只是写法不同而已。

标签: java encryption rsa


【解决方案1】:

example 将密钥保存为 Object Stream,它是 java 序列化的对象流,它有一些关于 javatypes 的元信息和用于编码二进制数据的特殊格式。要查看数字的真实大小,请尝试“pub.getModulus().bitLength()”。对我来说,它打印 1024。

【讨论】:

猜你喜欢
  • 2015-02-16
  • 2018-04-15
  • 2013-07-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-11
  • 1970-01-01
  • 2019-07-05
相关资源
最近更新 更多