java - RSA 中 1024 位 key 长度的实数

标签 java encryption rsa

我正在学习 RSA 密码学,所以我必须了解 ke 长度。 Here ,我找到了有关 key 长度含义的解释。

那里说:

When we say a "1024-bit RSA key", we mean that the modulus has length 1024 bits, i.e. is an integer greater than 2^1023 but lower than 2^1024. Such an integer could be encoded as a sequence of 1024 bits, i.e. 128 bytes.

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

我们都知道,1 字节 = 8 位。因此,1024 位 = 128 字节。好吧,它是二进制的。性格方面怎么样?

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

但是,我再次重新思考了 RSA 1024 位的真正含义。所以,我用谷歌搜索并发现this 。我测试了一下,发现公钥模数的位长是1024。但是,公钥的长度是309个数字。

现在我真的很困惑。

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

最佳答案

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

关于java - RSA 中 1024 位 key 长度的实数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23511758/

相关文章:

c - OpenSSL rsa 例程 :RSA_padding_check_PKCS1_type_2:pkcs decoding error

java - 尝试通过 HTTP 为 Spring Web MVC 服务配置 XML 编码时出现 "406 Not Acceptable"

java - IBM队列消息传输理解

java - 如何检查方法是否使用反射声明?

mysql - 如何加密论坛注册的用户密码?

c# - 如何使 RSACryptoServiceProvider 在没有填充(nopadding)的情况下工作?

java - 如何在android studio中单击时使复选框可编辑

java - 制作加密程序,我收到语法错误,但我不知道为什么

c# - 如何加密查询字符串避免加号、斜杠和反斜杠?

flutter - 在 Dart 中将 privateKey 转换为 PKCS#8 格式