【发布时间】: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