[英]Inconsistent, Slow Encryption Performance with Jasypt on Ubuntu Linux
我正在使用Jasypt的BasicBinaryEncryptor加密少量的二进制数据(大约1 KB)。 我正在使用Scala,但我怀疑这很重要。
val encryptor = new BasicBinaryEncryptor
encryptor.setPassword(password)
val encrypted = encryptor.encrypt(bytes.toByteArray())
这种加密操作的范围可以从几秒钟到任何地方,但通常要超过一分钟或更长时间。 似乎前几个操作运行正常,但之后速度变慢。
我已经尝试过Jasypt版本1.9.2和1.9.1。 在Ubuntu Linux 14.04(Hotspot JVM 1.8.0_45)和15.04上,此操作很慢,但在Mac OS X(Hotspot JVM 1.8.0_40-b25)上运行得很好。
关于可以更改哪些内容以提高Ubuntu的性能有任何想法吗?
您遇到的问题是Jasypt使用的盐生成器引起的。 BasicBinaryEncryptor
使用StandardPBEByteEncryptor与一个默认配置SaltGenerator 。 这导致使用使用SecureRandom的RandomSaltGenerator (从Jasypt v1.9.1开始)。 如标记空间所指出的,如果没有足够的熵,则SecureRandom将阻止。
如果可以使用/dev/urandom
而不是/dev/random
,则可以使用-Djava.security.egd=file:/dev/urandom
来启动程序,该程序不会阻塞。
另一种选择是配置您自己的加密器并使用其他SaltGenerator。 Jasypt提供了一些固定的SaltGenerators可以使用,或者您可以滚动自己的不使用SecureRandom的随机数。
在我们的Ubuntu服务器上,我们通过apt-get
安装了haveged
软件包。
在此处了解更多信息: http : //www.issihosts.com/haveged/
该软件包默认情况下未安装,但会产生熵。 完成此操作后,我们可以交换回/dev/random
而不必使用/dev/urandom
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.