我正在尝试用Java编写一个程序,在插入之前对数据库条目进行数字签名。我希望程序与算法无关 - 理想情况下,用户会在运行时将JCE提供程序和算法指定为参数。
有办法做到这一点吗?我一直在测试BouncyCastle提供程序,当我动态注册它时代码运行正常:
Security.addProvider(new BouncyCastleProvider());
但是,当我尝试通过在security / java.policy文件的末尾添加以下行来静态注册提供程序时,我在尝试获取安全实例时收到错误:java.security.NoSuchProviderException: no such provider: BC
使用提供者的对象。
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添加为第一个条目并得到相同的错误。
我是否将静态注册配置错误或者我尝试不可能?
答案 0 :(得分:3)
我认为您将静态注册添加到错误的文件中。
在同一文件夹中使用security.policy
代替java.policy
。
请参阅:https://www.bouncycastle.org/wiki/display/JA1/Provider+Installation