我正在尝试用 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/