如果你想在Java中使用加密强大的随机数,你可以使用SecureRandom
.不幸的是,SecureRandom
可能会很慢.如果它/dev/random
在Linux上使用,它可以阻止等待足够的熵建立.你如何避免性能损失?
有没有人使用Uncommon Maths作为解决这个问题的方法?
任何人都可以确认JDK 6中已经解决了这个性能问题吗?
在虚拟化Linux系统中耗尽熵似乎是一个常见问题(例如/ dev/random极慢?,让linux缓冲/ dev/random).尽管使用了硬件随机数生成器(HRNG),但经常建议使用像HAVEGED这样的熵收集守护进程.但是,熵收集守护程序(EGD)无法在Docker容器内运行,它必须由主机提供.
使用EGD适用于基于Linux发行版(如Ubuntu,RHEL等)的docker主机.在boot2docker中运行这样的守护进程 - 基于Tiny Core Linux(TCL) - 似乎是另一个故事.尽管TCL具有扩展机制,但是熵收集守护程序的扩展似乎不可用.
因此,EGD似乎是在(生产)托管环境中运行docker容器的正确解决方案,但是如何解决它在boot2docker中进行开发/测试?
由于在boot2docker中运行EGD似乎太难了,我想只需使用/ dev/urandom而不是/ dev/random.使用/ dev/urandom不太安全,但对于大多数没有生成长期加密密钥的应用程序仍然可以.至少它应该适用于boot2docker中的开发/测试.
我正在使用digitalocean并尝试在ubuntu上安装和启动tomcat但不幸的是我不能这样做.(创造了新的水滴并尝试了10次)
1GB Ram 30GB SSD Disk Amsterdam 2 Ubuntu 14.04 x64
当我启动tomcat时,它说"Tomcat启动".但我无法从浏览器访问页面.和./shutdown.sh返回错误.
可能是什么问题?
我现在注意到了什么.在我写这个问题时,会显示tomcat页面.显示页面花了28分钟
catalina.out说:INFO:使用[SHA1PRNG]为会话ID生成创建SecureRandom实例花了[1,718,769]毫秒.
以下是我的安装步骤(这些步骤适用于不同的vps,但不适用于digitalocean飞沫):
安装oracle jdk
sudo apt-get install python-software-properties
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java7-installer
sudo apt-get install oracle-java7-set-default
java -version
java version "1.7.0_72"
Java(TM) SE Runtime Environment (build 1.7.0_72-b14)
Java HotSpot(TM) 64-Bit Server VM (build 24.72-b04, mixed mode)
Run Code Online (Sandbox Code Playgroud)
设置java路径
sudo nano /etc/environment
JAVA_HOME="/usr/lib/jvm/java-7-oracle"
source /etc/environment
wget http://ftp.itu.edu.tr/Mirror/Apache/tomcat/tomcat-7/v7.0.56/bin/apache-tomcat-7.0.56.tar.gz
tar xvzf apache-tomcat-7.0.56.tar.gz
mv apache-tomcat-7.0.56/ apache-tomcat-7.0.56-server-1/
Run Code Online (Sandbox Code Playgroud)
启动Tomcat
./startup.sh
Using CATALINA_BASE: /usr/local/apache-tomcat-7.0.56-server-1
Using CATALINA_HOME: /usr/local/apache-tomcat-7.0.56-server-1 …
Run Code Online (Sandbox Code Playgroud) 我搜索了这个问题.我得到了印象,它在java 8中解决了.但突然之间,我开始在我的新VM中基于ubuntu 14.04解决这个问题.
2015-07-27 14:56:35.324 INFO 11809 --- [localhost-startStop-1] oacutil.SessionIdGeneratorBase:使用[SHA1PRNG]创建会话ID生成的SecureRandom实例花了[167,833]毫秒.
而且java版本是
java -version java version"1.8.0_45"Java(TM)SE运行时环境(版本1.8.0_45-b14)Java HotSpot(TM)64位服务器VM(版本25.45-b02,混合模式)
服务器是ubuntu 14.04.
另一件事是,我将这个java进程作为spring boot应用程序运行,它已经嵌入了tomcat运行.
任何想法,什么可能是错的?我甚至试过,
-Djava.security.egd = file:/ dev /./ urandom 选项