- 浏览: 3519785 次
- 性别:
- 来自: 北京
-
文章分类
最新评论
-
wanglf1207:
EJB的确是个不错的产品,只是因为用起来有点门槛,招来太多人吐 ...
weblogic-ejb-jar.xml的元素解析 -
qwfys200:
总结的不错。
Spring Web Flow 2.0 入门 -
u011577913:
u011577913 写道也能给我发一份翻译文档? 邮件437 ...
Hazelcast 参考文档-4 -
u011577913:
也能给我发一份翻译文档?
Hazelcast 参考文档-4 -
songzj001:
DbUnit入门实战
java.security
类 SecureRandom
java.lang.Objectjava.util.Random
java.security.SecureRandom
public class SecureRandom
此类提供加密的强随机数生成器 (RNG)。许多实现都是伪随机数生成器 (PRNG) 形式,这意味着它们将使用确定的算法根据实际的随机种子生成伪随机序列。其他实现可以生成实际的随机数,而另一些实现则可能结合使用这两项技术。
加密的强随机数至少要遵从《FIPS 140-2, Security Requirements for Cryptographic Modules 》中 4.9.1 部分指定的统计随机数生成器测试。另外,SecureRandom 还必须产生非确定性输出,因此,正如以下文章中所描述的那样,要求种子材料必须是不可预知的,SecureRandom 的输出必须是加密的强序列:《RFC 1750:Randomness Recommendations for Security 》。
与 Java Security 中其他基于算法的类一样,SecureRandom
也提供了与实现无关的算法,因此,调用方(应用程序代码)会请求特定的 RNG 算法并将它传回到该算法的 SecureRandom
对象中。如果需要,还可以通过特定的提供程序请求特定的算法。请参见 getInstance
方法。
因此,有以下两种请求 SecureRandom 对象的方法:仅指定算法名称,或者既指定算法名称又指定包提供程序。
- 如果仅指定算法名称,如下所示:
SecureRandom random = SecureRandom.getInstance("SHA1PRNG");
系统将确定环境中是否有所请求的算法实现,是否有多个,是否有首选实现。 - 如果既指定了算法名称又指定了包提供程序,如下所示:
SecureRandom random = SecureRandom.getInstance("SHA1PRNG", "SUN");
系统将确定在所请求的包中是否有算法实现;如果没有,则抛出异常。
SecureRandom 实现尝试完全随机化生成器本身的内部状态,除非调用方在调用 getInstance
方法之后又调用了 setSeed
方法:
SecureRandom random = SecureRandom.getInstance("SHA1PRNG"); random.setSeed(seed);
在调用方从 getInstance
调用中获得 SecureRandom 对象之后,它可以调用 nextBytes
来生成随机字节:
byte bytes[] = new byte[20]; random.nextBytes(bytes);
调用方还可以调用 generateSeed
方法来生成给定的种子字节数(例如,为其他随机数量生成器提供种子):
byte seed[] = random.generateSeed(20);
SecureRandomSpi
,
Random
,
序列化表格
<!----> <!---->
|
SecureRandom
()
通过使用此构造方法,调用方可获取一个 SecureRandom 对象,该对象包含的实现来自具有 SecureRandom 实现的最高优先级已安装提供程序。 |
|
SecureRandom
(byte[] seed)
通过使用此构造方法,调用方可获取一个 SecureRandom 对象,该对象包含的实现来自具有 SecureRandom 实现的最高优先级已安装提供程序。 |
protected
|
SecureRandom
(SecureRandomSpi
secureRandomSpi,
Provider
provider)
创建 SecureRandom 对象。 |
byte[]
|
generateSeed
(int numBytes)
返回给定的种子字节数量,该数量可使用此类用来为其自身提供种子的种子生成算法来计算。 |
String
|
getAlgorithm
()
返回此 SecureRandom 对象实现的算法的名称。 |
static SecureRandom
|
getInstance
(String
algorithm)
生成实现指定随机数生成器 (RNG) 算法的 SecureRandom 对象。 |
static SecureRandom
|
getInstance
(String
algorithm,
Provider
provider)
如果提供程序能够提供此种 RNG 实现,则为指定的 RNG 算法(由指定的提供程序提供)生成 SecureRandom 对象。 |
static SecureRandom
|
getInstance
(String
algorithm,
String
provider)
如果提供程序能够提供此种 RNG 实现,则为指定的 RNG 算法(由指定的提供程序提供)生成 SecureRandom 对象。 |
Provider
|
getProvider
()
返回此 SecureRandom 对象的提供程序。 |
static byte[]
|
getSeed
(int numBytes)
返回给定的种子字节数量,该数量可使用此类用来为其自身提供种子的种子生成算法来计算。 |
protected int
|
next
(int numBits)
生成一个包含用户指定伪随机位数的整数(右对齐,带前导零)。 |
void
|
nextBytes
(byte[] bytes)
生成用户指定的随机字节数。 |
void
|
setSeed
(byte[] seed)
重新提供此随机对象的种子。 |
void
|
setSeed
(long seed)
使用给定 long seed
中包含的八个字节,重新提供此随机对象的种子。 |
nextBoolean
, nextDouble
, nextFloat
, nextGaussian
, nextInt
, nextInt
, nextLong
|
clone
, equals
, finalize
, getClass
, hashCode
, notify
, notifyAll
, toString
, wait
, wait
, wait
|
评论
发表评论
-
字符串分割--java中String.split()用法
2013-03-06 14:25 74177在java.lang包中有String.sp ... -
用 HttpServletResponseWrapper 实现 Etag 过滤器
2012-07-09 16:58 3792原文出处:http://blog.chenlb.com/200 ... -
Fitnesse使用
2012-05-05 13:27 23540Fitnesse 的使用 一,介绍 Fitnesse是一种 ... -
Customizing the new FitNesse parser
2012-05-05 13:13 2157FitNesse began its life using ... -
java application中内嵌ActiveX控件
2011-11-14 15:57 5548我这里用的是SWT/JFace开发application,SW ... -
Google Java Developer Tools Downloads
2011-08-09 00:04 2371WindowBuilder Pro原来叫WindowB ... -
Jalita
2011-08-06 00:49 1594Jalita (Java light terminal ada ... -
【转】用Java写字符终端界面
2011-07-29 13:13 2143终端界面GUI开源项目charva。 这个框架让你可以用开发 ... -
[转]mybatis下的分页,支持所有的数据库
2011-07-21 13:21 14866大 家都知道,mybatis的自带分页方法只是逻 ... -
Java framework for text- & console-based forms?
2011-07-21 01:06 1741charva jcurses JNA , ... -
JNA(Java Native Access)学习入门
2011-07-21 01:04 22717Java Native Access 项目 在 ... -
JAVA上加密算法的实现用例
2011-06-25 12:38 4904来源:www.ibm.com ... -
如何将GlassFish作为Windows服务运行
2011-05-18 23:21 2410本文档来自GlassFish官方网站,详细介绍了将 G ... -
JAVA UDP打洞必备知识点---NAT
2011-05-05 12:56 8775一、引言 RFCl631 ... -
Keystore概念,Keytool工具使用
2011-04-28 16:20 2932近来由于项目需要做Single Sign On, 研究了一 ... -
利用Eclipse Profile Plugin监控分析Tomcat性能
2011-04-18 16:14 3725目前新版本的Eclipse在启动应用服务器的时候有一个新的选 ... -
m2eclipse: Eclipse is running in a JRE, but a JDK is required
2011-02-04 23:43 2561Eclipse 安装了Maven插件,启动Eclipse ... -
利用JNative实现Java调用动态库
2010-10-18 00:43 2122由于项目要求,需要用J ... -
RHEL5支持大内存
2010-10-08 16:19 3039安装 RHEL 5 ,硬件为 4G 内存,安装完成 ... -
Windows Server 2003 和 Windows 2000 提供大内存支持
2010-10-08 16:19 1873本文介绍物理地址扩展 ...
相关推荐
`SecureRandom`类是Java和Android中用于生成随机数的重要工具,它通常被用于密码学中的密钥生成、初始化向量(IV)的创建以及其他安全性相关的需求。然而,原生的`SecureRandom`在某些版本的Android上可能存在性能...
主要介绍了Tomcat 启动时 SecureRandom 非常慢解决办法的相关资料,需要的朋友可以参考下
java.security.NoSuchAlgorithmException: SHA1PRNG SecureRandom not available at sun.security.jca.GetInstance.getInstance(GetInstance.java:142) at java.security.SecureRandom.getInstance(SecureRandom....
密码 使用SecureRandom和来自熵数据的安全密码生成器
安全随机 这将生成一个随机的十六进制字符串。... var SecureRandom = require('securerandom'); console.log(SecureRandom.hex(12)); // prints a random 12 byte string 测试 npm test 贡献 欢迎。
也可以不指定SecureRandom对象的种子,这样每次生成出来的密钥都可能是不一样的。 在Java中,AES加密和解密的逻辑大致如下: 1. 生成/获取密钥 2. 加/解密 生成密钥的过程中可以指定固定的种子,每次生成出来的...
可以修改 Linux 上 Weblogic 使用的 JDK 的安全配置文件 $JAVA_HOME/jre/lib/security/java.security,将“securerandom.source=file:/dev/urandom”修改为“securerandom.source=file:/dev/./urandom”。...
- **安全性**:虽然`Math.random()`生成的随机数足够用于大多数情况,但对于安全性要求极高的场景(如密码生成),可能需要使用更安全的随机数生成器,如`SecureRandom`类。 #### 6. 扩展与应用 - **扩展**:如果...
核心代码TlsClientProtocol protocol = new TlsClientProtocol(tcpClient.GetStream(), new Org.BouncyCastle.Security.SecureRandom()); MyTlsClient client = new MyTlsClient(); protocol.Connect(client);
标注使用java.security.SecureRandom在策略Apigee Edge代理内生成随机数(int,UUID或高斯值),并使用该信息设置上下文变量。免责声明此示例不是正式的Google产品,也不是正式的Google产品的一部分。使用此标注您...
secure-random-uniform 生成安全,随机,统一的整数,以补偿模偏差用法var secureRandom = require ( 'secure-random-uniform' )// Numbers from [0, 2000)secureRandom ( 2000 )// Numbers from [100, 110)...
* 所以 SecureRandom securerandom = new SecureRandom(tohash256Deal(key)); 替换为下面内容 * 以适应linux的变化 */ KeyGenerator keygen=KeyGenerator.getInstance("AES"); SecureRandom securerandom = new ...
JAVA中提供了多种方式来生成随机数,包括使用java.util.Random类、java.security.SecureRandom类和java.util.concurrent.ThreadLocalRandom类。其中,SecureRandom类是最安全的随机数生成方式,因为它使用了加密强...
### Struts2源码解析及工作原理 #### Struts2简介 Struts2是一个流行的Java Web应用程序框架,它继承和发展了Struts1.x的一些特性,同时又采用了WebWork框架的核心技术,使得Struts2在设计理念和技术实现上都有了...
// 使用 SecureRandom 类生成安全的随机数 try { java.security.SecureRandom secureRandom = new java.security.SecureRandom(); byte[] secureBytes = new byte[5]; secureRandom.nextBytes(secureBytes); System...
- 可以通过调用`SecureRandom.getInstance()`方法获取`SecureRandom`实例。 - 如果指定了算法和提供者,则可以通过`SecureRandom.getInstance(algorithm, provider)`来获取实例。 - 需要注意的是,如果指定的算法...
默认情况下,它会根据`java.security.egd`或`securerandom.source`属性来决定随机数源。如果没有设置,Java会使用操作系统提供的默认源,通常在Linux上就是`/dev/random`。 3. **随机数源对比**: - `/dev/random`...
`SecureRandomSpi`类是Java加密API(Java Cryptography Architecture, JCA)中的一个服务提供者接口,它定义了`SecureRandom`类的抽象方法。`SecureRandom`类是用来生成高质量随机数的,其安全性比Java的默认随机数...
SecureRandom secureRandom = new SecureRandom(); int secureNumber = secureRandom.nextInt(); ``` 3. **系统时间作为种子** 为了确保每次程序运行时得到不同的随机序列,通常会用当前时间作为随机数生成器的...