BouncyCastle的Threefish-512是否需要某种配置?

时间:2018-03-26 11:31:16

标签: java cryptography hsqldb bouncycastle

我正在尝试使用bouncycastle中的threefish-512加密jdbc hsqldb实例。 Hsqldb支持通过连接URL:http://hsqldb.org/doc/guide/dbproperties-chapt.html#dpc_crypt_props进行配置。我熟悉密码学的基本知识,但从未使用过JCE,bouncycastle等。

我首先将crypt_type=Threefish-512;crypt_key=de7e...添加到我的连接字符串中。这引发了关于未知提供者和算法的异常。指定crypt_provider=org.bouncycastle.jce.provider.BouncyCastleProvider并未解决此问题。

然后我在jdbc初始化之前将Security.addProvider(new BouncyCastleProvider());添加到我的代码中,现在crypt_type=Threefish-512;crypt_key=de7e...(没有crypt_provider)似乎主要工作。它引发了一个新的例外:

  

非法密钥大小或默认参数

我的crypt_key是128个十六进制字符,因此它是一个512位密钥。我怀疑关键是这里的问题。调试Cipher类显示密钥确实被解析为64字节的数组。

在将bouncycastle / threefish作为提供者添加后,是否需要对其进行某种配置?关于这个主题的简单信息似乎在互联网上非常稀少,没有快速开始bouncycastle的三鱼或其他提到这个问题或我能找到的任何东西。

Spring启动项目,hsqldb 2.4.0,bouncycastle 1.59来自maven org.bouncycastle:bcprov-jdk15on。一切都已经有效(数据库连接等),我只是想在它上面添加数据库的加密。通常,您需要做的就是将crypt_ *参数添加到连接字符串中,hsqldb将处理其余的。

public static void main(String[] args) { Security.addProvider(new BouncyCastleProvider()); ConfigurableApplicationContext app = SpringApplication.run(App.class, args);

application.properties spring.datasource.url=jdbc:hsqldb:${app.db.path};create=${spring.datasource.initialize};hsqldb.tx=mvlocks;hsqldb.tx_level=serializable;crypt_type=Threefish-512;crypt_key=de7e...

我错过了这样的事情吗?

BouncyCastleProvider provider = new BouncyCastleProvider(); provider.setParameter("foo", "bar"); Security.addProvider(provider);

1 个答案:

答案 0 :(得分:1)

叹息。愚蠢的美国立法者和他们的恶作剧。我使用的是java 8u151,它仍然具有受限制的加密策略。更新到u161解决了这个问题。