【发布时间】:2014-06-30 15:58:27
【问题描述】:
我正在尝试找出应该使用哪个 Sun 加密提供程序来生成将用于在 Java 中加密数据的 RSA 密钥对。我知道还有其他提供商,例如 Bouncy Castle,但我想使用其中一个 Sun 提供商。 (算法:RSA,密钥大小2048)
例如,在我的机器上,我目前有以下可用的提供程序:
- 太阳 1.7
- SunRsaSign 1.7
- SunEC 1.7
- SunJSSE 1.7
- SunJCE 1.7
- SunJGSS 1.7
- SunSASL 1.7
- XMLDSig 1.0
- SunPCSC 1.7
我之前使用提供者 SunRsaSign 来生成用于签名数据的 RSA 密钥对。但我不确定使用 SunRsaSign 生成的密钥对加密数据是否安全或是否有意义。
我注意到提供者 SunJSSE 包含:sun.security.rsa.RSAKeyPairGenerator
我的主要问题是:应该使用哪个 Sun 提供商来生成将用于加密 (非签名)的 RSA 密钥对?
此外,SunRsaSign 生成的密钥对是否应该仅用于签署数据?因为这个提供者的名称中包含“Sign”这个词,我认为它是专门用于签名的,但现在我不太确定。
最后,使用 SunJSSE 生成的密钥对进行一般加密是否安全且有意义?如果是这样,SunJSSE 生成的 RSA 和 SunJSSE 生成的 RSA 密钥对有什么区别?
【问题讨论】:
-
为什么还要指定提供者?通常,您不应该关心各个提供商所做的细节。对特定提供程序进行硬编码会降低您的代码可移植性。
-
嗨,谢谢。我完全理解你的观点,在大多数情况下我会同意你的观点。我想指定提供者的原因是因为我正在编写一个库来帮助(但出于安全原因也在某些方面限制)客户端应用程序访问加密服务。我不想允许使用提供者列表中具有最高优先级的提供者(JCA 的工作方式),我只想提供一组经过我批准的安全提供者。我不想简单地让具有最高优先级的提供者被使用,因为它可能不安全。
标签: java encryption rsa jce jca