自身有一套OA源码,在windows开发和部署都没有问题,在linux和os里面就无法部署一致爆无法解密,找了很多方法,因为本身项目中用的rcs的方式以为是加密java的jdk版本换了跟windows一样还是不可以。
在Linux操作系统中,有一个特殊的设备文件,可以用作随机数发生器或伪随机数发生器。
/dev/random
在读取时,/dev/random设备会返回小于熵池噪声总数的随机字节。/dev/random可生成高随机性的公钥或一次性密码本。若熵池空了,对/dev/random的读操作将会被阻塞,直到从别的设备中收集到了足够的环境噪声为止。
当然你也可以设置成不堵塞,当你在open 的时候设置参数O_NONBLOCK, 但是当你read的时候,如果熵池空了,会返回-1
/dev/urandom
/dev/random的一个副本是/dev/urandom ("unlocked",非阻塞的随机数发生器[4]),它会重复使用熵池中的数据以产生伪随机数据。这表示对/dev/urandom的读取操作不会产生阻塞,但其输出的熵可能小于/dev/random的。它可以作为生成较低强度密码的伪随机数生成器,不建议用于生成高强度长期密码。
Linux下设置随机数
/proc/sys/kernel/random
在此目录下,可以配置/dev/random的参数
Poolsize
The file poolsize gives the size of the entropy pool
Read-wakeup_threadhold
The file read_wakeup_threshold contains the number of bits ofentropy required for waking up processes that sleep waiting for entropy from /dev/random. The default is 64.
write_wakeup_threshold
The filewrite_wakeup_threshold contains the number of bits of entropy below which wewake up processes that do a select(2) or poll(2) for write access to /dev/random.
在JAVA中的配置发生器
在Java中可以通过两种方式去设置指定的随机数发生器
1. 在tomcat下catalina.sh中最上边添加
-Djava.security.egd=file:/dev/random或者 -Djava.security.egd=file:/dev/urandom
2. 修改jvm的计算方式
修改配置文件java.security 在jvm_home\jre\lib\security
参数securerandom.source=file:/dev/urandom
/dev/random 是堵塞的,在读取随机数的时候,当熵池值为空的时候会堵塞影响性能,尤其是系统大并发的生成随机数的时候,如果在随机数要求不高的情况下,可以去读取/dev/urandom
整个流程如下:
JAVA中首先读取系统参数java.security.egd,如果值为空的时候,读取java.security配置文件中的参数securerandom.source, 在通常情况下,就是读取参数securerandom.source,默认值是/dev/urandom,也就是因该是不堵塞的。
但实际情况是,在测试linux环境下的时候,你会发现默认值却是堵塞的。
相关推荐
DES加密解密(适用Windows和Linux系统)防止linux下解密失败,主要是SecureRandom 实现完全随操作系统本身的內部状态
标注使用java.security.SecureRandom在策略Apigee Edge代理内生成随机数(int,UUID或高斯值),并使用该信息设置上下文变量。免责声明此示例不是正式的Google产品,也不是正式的Google产品的一部分。使用此标注您...
* 该实现在 windows 上每次生成的 key 都相同, * 但是在 solaris 或部分 linux 系统上则不同。 * 所以 SecureRandom securerandom = new SecureRandom(tohash256Deal(key)); 替换为下面内容 * 以适应linux的...
密码 使用SecureRandom和来自熵数据的安全密码生成器
AES AES加密和解密。 实现Java服务器与客户端的通信c ... 另外,在线上有许多JAVA AES算法,其中许多都使用SecureRandom,如果您的代码中出现SecureRandom这样的东西,那么您将无法再在C中解决它。
主要介绍了Tomcat 启动时 SecureRandom 非常慢解决办法的相关资料,需要的朋友可以参考下
可以生成随机数,稍微加以修改即可生成想要的位数
文件加密解密算法(Java源码) java,file,算法,加密解密,java源码 package com.crypto.encrypt; import java.security.SecureRandom; import java.io.*; import javax.crypto.spec.DESKeySpec; import javax.crypto...
它的功能类似于 Ruby 中的 SecureRandom.hex 方法。 用法 var SecureRandom = require('securerandom'); console.log(SecureRandom.hex(12)); // prints a random 12 byte string 测试 npm test 贡献 欢迎。
下载的Struts2源代码文件是一个名叫struts-2.1.0-src.zip的压缩包,里面的目录和文件非常多,读者可以定位到struts-2.1.0-src"struts-2.0.10"src"core"src"main"java目录下查看Struts2的源文件
java中使用公钥加密私钥解密原理. KeyGenerater类: public class KeyGenerater { private byte[] priKey; private byte[] pubKey; public void generater() { try { KeyPairGenerator keygen = KeyPairGenerator ...
ctx.init(null, new TrustManager[] { tm }, new java.security.SecureRandom()); // SSLConnectionSocketFactory ssf = new SSLConnectionSocketFactory( // ctx, NoopHostnameVerifier.INSTANCE); ...
带有SecureRandom补丁的Android加密库。.zip
java.security.NoSuchAlgorithmException: SHA1PRNG SecureRandom not available at sun.security.jca.GetInstance.getInstance(GetInstance.java:142) at java.security.SecureRandom.getInstance(SecureRandom....
java8流源码 更随意。 更短的时间。 仍然是 java.util.Random 的一个实例。 BetterRandom 是一个库,可帮助您从伪随机数生成器 (PRNG) 及其种子源中获得最佳性能和最佳伪随机性。 有了它,您可以: 将具有改进的速度...
secure-random-uniform 生成安全,随机,统一的整数,以补偿模偏差用法var secureRandom = require ( 'secure-random-uniform' )// Numbers from [0, 2000)secureRandom ( 2000 )// Numbers from [100, 110)...
确保已安装Java 6/7和ant,然后运行: ant init ant drng-bechmark 项目现场 抽象的 确定性随机数生成器(DRNG)对于各种各样的应用很重要。 但是,某些DRNG的加密安全性不如其他DRNG。 通常,RNG提供的密码学越多...
c# 文件加密解密源码