java - Java 中独立于提供者的加密?

标签 java bouncycastle jce

我正在尝试用 Java 编写一个程序,该程序将在插入之前对数据库条目进行数字签名。我希望程序独立于算法 - 理想情况下,用户将在运行时指定 JCE 提供程序和算法作为参数。

有办法做到这一点吗?我一直在使用 BouncyCaSTLe 提供程序进行测试,当我动态注册它时,代码运行良好:

Security.addProvider(new BouncyCastleProvider());

但是,当我尝试通过将以下行添加到 security/java.policy 文件末尾来静态注册提供程序时,出现错误: java.security.NoSuchProviderException: no such provider: BC 当我尝试使用提供程序获取 Security 对象的实例时。

security.provider.1=sun.security.provider.Sun
security.provider.2=org.bouncycastle.jce.provider.BouncyCastleProvider

具体来说,我将这些行添加到 /etc/java-7-openjdk/security/java.policy (链接到 $JAVA_HOME/jre/lib/security/java.policy)。政策)。这是在 Ubuntu 12.04 上。我还尝试将 BouncyCaSTLeProvider 添加为第一个条目,但出现了相同的错误。

我配置的静态注册是否错误,或者我尝试的操作是不可能的?

最佳答案

我认为您将静态注册添加到了错误的文件中。 在同一文件夹中使用 security.policy 而不是 java.policy

参见:https://www.bouncycastle.org/wiki/display/JA1/Provider+Installation

关于java - Java 中独立于提供者的加密?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31052370/

相关文章:

java - RSA 公钥导出

java - 当 >= 运行时,Java 是否隐式检查 > 和 ==?

java.lang.ClassCastException : [B cannot be cast to [Ljava. lang.Object;使用 JPA 2.2 query.getResultStream().findFirst() 时

java - 为什么 BouncycaSTLe 的 PEMReader 无法读取这个 M2Crypto 生成的 PEM?

java - bouncycaSTLe 错误 "JCE cannot authenticate the provider BC"与 "jar-with-dependencies"

java - Java 加密扩展的 key 长度限制

java - 将 openssh 公钥 (ecdsa-sha2-nistp256) 与 Java 安全性结合使用

java - 在orElseThrow中执行多行

java - 无法访问的语句帮助(链表)

c# - 在 Bouncy CaSTLe 中使用正确的加密服务提供商更新 x509Certificate2