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

时间:2015-06-25 13:52:46

标签: java bouncycastle jce

我正在尝试用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添加为第一个条目并得到相同的错误。

我是否将静态注册配置错误或者我尝试不可能?

1 个答案:

答案 0 :(得分:3)

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

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