【发布时间】:2012-07-02 02:08:37
【问题描述】:
令人惊讶的是,网络上关于使用 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 和幕后发生的数学有基本的了解,所以我了解 publicExponent 和 strength 是什么。我认为publicExponent 指的是phi(pq) 的互质数,据我所知,只要使用适当的填充,它可以很小(如3)。但是,我不知道certainty 指的是什么(有些地方提到它可能指的是百分比,但我想确定一下)。 SecureRandom 的使用是不言自明的。 documentation of RSAKeyGenerationParameters 完全没有价值(这并不奇怪)。我唯一的猜测是它与生成的密钥的准确性有关,但我想再次确定。所以我的问题是certainty 和publicExponent 的合适值是多少?
附: 请不要回答“这取决于上下文 - 您希望信息有多安全”。除非另有说明,否则假设最高级别的安全性(即 4096 位 RSA 密钥或更高)是非常安全的......我也很感谢提供使用 Bouncy Castle 轻量级 API 的良好示例的资源链接(我不在所有人都对 JCA 实现或与之相关的任何示例感兴趣)。
【问题讨论】:
标签: java security encryption rsa bouncycastle