最近在搞一个图片验证码的东东,4位随机数字,采用java的Radom类来生成随机数,在tomcat6下,运行正常。但是,到了tomcat5下却始终是四个相同的数字。分析了下,应该和tomcat没有关系,应该还是jdk的区别,tomcat6下使用的是jdk5.0,而tomcat5下使用的是jdk1.4。
有如下测试程序可以直观的展现一个问题:
private static int testRandom() {
Random r = new Random();
int i; // 生成的随机数
i = Math.abs(r.nextInt(9));
return i;
}
public static void main(String[] args) {
int count = 0; // 生成的密码的长度
StringBuffer pwd = new StringBuffer("");
while (count < 100) {
pwd.append(testRandom());
count++;
}
System.out.println(pwd.toString());
}
jre5.0下运行,结果为:
162862684487134624170311078722232312330250575038456227172745210654510831674820177
5053578143000401231
jre1.4下运行,结果为:
666666666666666666666666666666666666666666666666666666666666666666666666666666666
6666666666666666666
可见,该段测试代码在jre1.5中,达到了生成随机数的目的,而在1.4中,没有实现。为什么呢,看来得研究下这段代码的关键之处,那就是Random r = new Random();这段代码在5.0和1.4中意义有何区别。
分享到:
相关推荐
"java.util"包提供了集合、日期时间、随机数生成等功能;"java.io"包处理输入输出操作,如FileInputStream和OutputStream。 "launcher"目录通常包含Java应用程序的启动器,如`javaw.exe`和`java.exe`,它们负责加载...
标题“jdk1.4生成guid”指的是在Java 1.4版本中生成全局唯一标识符(GUID)的技术。GUID,全称Globally Unique Identifier,是一种确保在全球范围内唯一标识对象的128位数字。在Java中,通常使用`java.util.UUID`类...
调用该对象的不同方法可以生成各种不同类型的随机数,JDK 文档中关于 Random 类的构造方法叙述如下: public Random() 创建一个新的随机数生成器。此构造方法为随机数生成器的种子设置某个值,该值与此构造方法的...
需要安装JDK才能运行,因为这个是jar文件,安装后双击jar文件便可以运行了。这是生成 用户自定义区间内 自定义任意个数 不重复的随机数
`java.util`包则包含了集合框架、日期时间、随机数生成器等通用工具类。 2. **网络编程**:`java.net`包提供了网络通信的功能,如`Socket`和`ServerSocket`,用于实现客户端-服务器模型的通信。 3. **多线程**:`...
标题中的"bcprov-jdk15on"和"bcprov-ext-jdk15on"是两个与Java相关的库,它们是Bouncy Castle项目的一部分。Bouncy Castle是一个著名的开源加密库,广泛用于Java和.NET平台上,提供了大量的加密算法,如RSA、AES、...
5. **随机数生成器**:Bouncy Castle提供了强大的随机数生成器,这对于加密安全性至关重要。 6. **ASN.1编码**:高级系统标记语言(ASN.1)是用于结构化数据编码的标准,这个库提供了asn.1编解码功能。 7. **密钥和...
此外,`ThreadLocalRandom`类的引入提高了多线程环境下随机数生成的性能和安全性。 在日期和时间API上,Java 8用`java.time`包替换了过时的`java.util.Date`和`java.util.Calendar`,提供了更直观、更易用的API,如...
Bouncy Castle库不仅包含了基本的加密和解密功能,还提供了数字签名、消息认证码(MAC)、随机数生成器等安全相关的服务。在开发需要加密和安全通信的应用时,如HTTPS、SSL/TLS协议、PGP、S/MIME等,开发者经常会...
这个jar文件是Bouncy Castle的基础提供者包,包含了广泛的密码学算法实现,包括公钥和私钥算法、消息摘要函数、哈希函数、随机数生成器等。它扩展了Java的标准加密包JSSE(Java Secure Socket Extension)和JCE...
4. **随机数生成器(RNG)**:为安全的密钥生成和其他随机需求提供高质量的随机数。 5. **PKCS#7/CMS**:一种用于封装和签名数据的标准。 6. **X.509证书处理**:读取、创建和操作数字证书。 7. **OpenSSL接口**:...
其中,`randomUUID()`是最常用的,它基于当前时间戳和随机数生成一个UUID,通常形式为“-”分隔的32个十六进制数字。例如: ```java UUID uuid = UUID.randomUUID(); System.out.println(uuid.toString()); ``` `...
JEP 356:增强型伪随机数生成器:引入了新的随机数生成器接口和算法,提高了随机数生成的质量和性能。 JEP 382:新的macOS渲染管线:为macOS平台提供了更高效的图形渲染能力,提升了Java应用程序在macOS上的性能。 ...
4. **线程本地随机数生成器**:新增`ThreadLocalRandom`类,提供线程安全的高效随机数生成,减少了多线程环境下的竞争条件。 5. **增强的`ProcessHandle` API**:扩展了对进程信息的访问,包括进程的启动时间、用户...
6. **随机数生成器**:提供安全的随机数生成器,对于加密过程至关重要。 7. **ASN.1编码和解码**:支持ASN.1(Abstract Syntax Notation One)编码规则,这是在X.509证书和其他安全协议中广泛使用的编码格式。 在...
这个库提供了广泛的支持,涵盖了众多的加密算法,如对称加密、非对称加密、哈希函数、消息认证码(MAC)、数字签名、密钥协议以及随机数生成等。标题"bcprov-jdk15on-1.47运行包和源码包"表明我们有两个文件,一个是...
Bouncy Castle提供了不受这些限制的更强大的加密算法,包括对称加密、非对称加密、哈希函数、消息摘要算法、数字签名、随机数生成器等。此外,它还支持OpenSSL接口,使得Java应用可以无缝地与使用OpenSSL的系统进行...
2. **JCE**:Java Cryptography Extension提供了加密、密钥生成、密码套件选择和安全随机数生成等功能,对于处理敏感数据的Java应用至关重要。 3. **Kerberos**:Kerberos协议是一种基于密钥分发中心(KDC)的网络...
例如,`java.util`包包含了集合框架、日期和时间处理、随机数生成等功能;`java.io`包提供了输入/输出流,用于数据的读写。 5. **异常处理**: Java中的异常处理机制通过`try-catch-finally`块来捕获和处理错误。...