当前位置: 首页 > 面试题库 >

使用轻量级API生成Bouncy Castle RSA密钥对

毕浩渺
2023-03-14
问题内容

令人惊讶的是,网络上关于使用Bouncy Castle的轻量级API的信息很少。看了一会儿之后,我得以整理出一个基本的例子:

RSAKeyPairGenerator generator = new RSAKeyPairGenerator();
generator.init(new RSAKeyGenerationParameters
    (
        new BigInteger("10001", 16),//publicExponent
        SecureRandom.getInstance("SHA1PRNG"),//prng
        1024,//strength
        80//certainty
    ));

AsymmetricCipherKeyPair keyPair = generator.generateKeyPair();

我有RSA的一个基本的了解,并且会在幕后数学,让我明白了什么publicExponentstrength是。我想publicExponent是指一个互质数,phi(pq)只要使用适当的填充,它就可以很小(如3)。但是,我不知道certainty指的是什么(提到某个地方它可能指的是百分比,但我想确定)。的使用SecureRandom是不言自明的。RSAKeyGenerationParameters的文档完全毫无价值(毫无疑问)。我唯一的猜测是,它与生成的键的准确性有关,但是我还是想确定一下。所以我的问题是certainty和的适当值是publicExponent多少?

PS:请不要回答“这取决于上下文-
您希望信息的安全性”。除非另有说明,否则假定最高的安全级别(即4096位RSA密钥或更高)是非常安全的…我也希望获得链接的链接,这些链接提供了使用Bouncy
Castle的轻量级API的很好的示例(我不喜欢所有对JCA实施或与此有关的示例感兴趣的人。


问题答案:

您正在为两个使用正确的值。

publicExponent应该是Fermat编号。0x10001(F4)是当前推荐值。3(F1)也被认为是安全的。

RSA密钥生成需要素数。但是,不可能生成绝对质数。像任何其他加密库一样,BC使用可能的质数。确定性表示您希望数字是质数的确定性。任何高于80的值都会大大减慢密钥生成的速度。

请注意,在素数不是真素数的情况下,由于BC检查相对素数,因此RSA算法仍然可以使用。



 类似资料:
  • 我正在尝试创建一个公钥以允许我推送到Git,但我的. ssh文件夹尚未创建。 以下是我运行的命令: $ssh-keygen-t rsa-Cemaill@me.com 生成公共/私有rsa密钥对 输入保存密钥的文件(/h/.ssh/id\u rsa): 这就是H:驱动器配置、数据、配置文件、配置文件中的全部内容。V2 我认为有一个问题,因为当我得到提示输入文件,其中保存密钥(/h//. ssh/id

  • Swagger支持api密钥的安全性,但这似乎仅限于单个参数。 有没有办法定义一组参数(key和secret)作为请求中的参数? 或者,唯一的方法就是跳过安全方案,只将这些参数添加到每个请求中?

  • 如果我在某个地方出错,请纠正我,因为我是加密领域的新手。 我使用以下命令在Java 7中生成EC密钥对: 根据:文件。神谕com/javase/7/docs/technotes/tools/windows/keytool。html#命令 keytools-genkey对-alias MyServerPair-keyalg EC-keysize 571-sigalg SHA512 with ECDS

  • 我想生成一个自签名的可信证书和一个csr,并用创建的可信证书对csr进行签名。我正在用keytool尝试它。在使用以下命令创建受信任证书的第一步中 keytool-list-v-keystore cert/test.keystore 使用上面的“genkey”命令创建的证书的条目类型为“privatekeyentry”,如何创建可信的证书条目?

  • 我得到异常“http://api.openweathermap.org/data/2.5/weather?q=sydney”。有人能帮忙怎么用吗。当我粘贴以下内容时,可以很好地使用web浏览器 我也试过下面的组合,但没有运气

  • 问题内容: 题 我正在寻找Java内存对象缓存API。有什么建议吗?您过去使用过什么解决方案? 当前 现在,我只是在使用地图: 要求 我需要扩展缓存以包括以下基本功能: 最大尺寸 生存时间 但是,我不需要更复杂的功能,例如: 来自多个进程的访问(缓存服务器) 持久性(到磁盘) 意见建议 内存中缓存: Guava CacheBuilder-活动开发。请参阅此演示文稿。 LRUMap-通过API配置。