SecureRandom 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
此类提供加密强随机数生成器(RNG)。
[Android.Runtime.Register("java/security/SecureRandom", DoNotGenerateAcw=true)]
public class SecureRandom : Java.Util.Random
[<Android.Runtime.Register("java/security/SecureRandom", DoNotGenerateAcw=true)>]
type SecureRandom = class
inherit Random
- 继承
- 属性
注解
此类提供加密强随机数生成器(RNG)。
加密强随机数最低符合 FIPS 140-2 中指定的统计随机数生成器测试,加密模块http://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.140-2.pdf的安全要求,第 4.9.1 节。 此外, SecureRandom 还必须生成非确定性输出。 因此,SecureRandom传递给对象的任何种子材料都必须不可预知,并且所有SecureRandom输出序列都必须以加密方式强,如 RFC 4086:安全http://tools.ietf.org/html/rfc4086随机性要求中所述。
许多 SecureRandom 实现采用伪随机数生成器(PRNG(也称为确定性随机位生成器或 DRBG)的形式,这意味着它们使用确定性算法从随机种子生成伪随机序列。 其他实现可能会生成真正的随机数,而其他实现可能同时使用这两种技术。
调用方通过无参数构造函数或方法之getInstance一获取SecureRandom实例。 例如:
<blockquote>
SecureRandom r1 = new SecureRandom();
SecureRandom r2 = SecureRandom.getInstance("NativePRNG");
SecureRandom r3 = SecureRandom.getInstance("DRBG",
DrbgParameters.instantiation(128, RESEED_ONLY, null));
</blockquote>
上面的第三个 SecureRandom 语句返回支持特定实例化参数的特定算法的对象。 实现的有效实例化参数必须与此最小请求匹配,但不一定相同。 例如,即使请求不需要特定功能,实际实例化也可以提供该功能。 实现可能会在实际使用之前延迟实例化 a SecureRandom ,但在创建有效实例化参数后必须确定,并且 #getParameters() 应始终返回相同的结果不变。
调用以下方法以检索随机字节的典型调用方 SecureRandom :
<blockquote>
SecureRandom random = new SecureRandom();
byte[] bytes = new byte[20];
random.nextBytes(bytes);
</blockquote>
调用方还可以调用 #generateSeed 该方法来生成给定数量的种子字节(例如,为其他随机数生成器设定种子):
<blockquote>
byte[] seed = random.generateSeed(20);
</blockquote>
新创建的 PRNG SecureRandom 对象未设定种子(除非由其创建)。#SecureRandom(byte[]) 第一个调用 nextBytes 将强制它从特定于实现的萎缩源播种自身。 如果 setSeed 以前调用过,则不会进行这种自播。
可以随时通过调用reseed或setSeed方法重新分配 ASecureRandom。 该方法 reseed 从其 entropy 源读取 entropy 输入以重新分配自身。 该方法 setSeed 要求调用方提供种子。
请注意, reseed 所有 SecureRandom 实现都可能不支持。
某些SecureRandom实现可能接受参数及其#nextBytes(byte[], SecureRandomParameters)#reseed(SecureRandomParameters)方法,以进一SecureRandomParameters步控制方法的行为。
注意:根据实现的不同,generateSeedreseed如果nextBytes各种类似 Unix 的操作系统上的 entropy 源为 /dev/random,则和方法可能会阻止收集 entropy。例如,如果 entropy 源是 /dev/random。
<h2> 线程安全 </h2>SecureRandom 对象可供多个并发线程使用。
在 1.1 中添加。
Java文档java.security.SecureRandom。
本页的某些部分是根据 创建和共享的工作进行的修改,并根据 许可证中所述的条款使用。
构造函数
| 名称 | 说明 |
|---|---|
| SecureRandom() |
构造实现默认随机数算法的安全随机数生成器(RNG)。 |
| SecureRandom(Byte[]) |
构造实现默认随机数算法的安全随机数生成器(RNG)。 |
| SecureRandom(IntPtr, JniHandleOwnership) |
创建 JNI 对象的托管表示形式时使用的构造函数;由运行时调用。 |
| SecureRandom(SecureRandomSpi, Provider) |
创建一个 |
属性
| 名称 | 说明 |
|---|---|
| Algorithm |
返回此 |
| Class |
返回此 |
| Handle |
基础 Android 实例的句柄。 (继承自 Object) |
| InstanceStrong |
返回 |
| JniIdentityHashCode |
此类提供加密强随机数生成器(RNG)。 (继承自 Object) |
| JniPeerMembers |
此类提供加密强随机数生成器(RNG)。 |
| Parameters |
返回此 |
| PeerReference |
此类提供加密强随机数生成器(RNG)。 (继承自 Object) |
| Provider |
返回此 |
| ThresholdClass |
此 API 支持 Mono for Android 基础结构,不打算直接从代码使用。 |
| ThresholdType |
此 API 支持 Mono for Android 基础结构,不打算直接从代码使用。 |
方法
| 名称 | 说明 |
|---|---|
| Clone() |
创建并返回此对象的副本。 (继承自 Object) |
| Dispose() |
此类提供加密强随机数生成器(RNG)。 (继承自 Object) |
| Dispose(Boolean) |
此类提供加密强随机数生成器(RNG)。 (继承自 Object) |
| Equals(Object) |
指示其他对象是否“等于”此对象。 (继承自 Object) |
| GenerateSeed(Int32) |
返回给定的种子字节数,使用此类用于种子本身的种子生成算法计算。 |
| GetHashCode() |
返回对象的哈希代码值。 (继承自 Object) |
| GetInstance(String, ISecureRandomParameters, Provider) |
返回一个 |
| GetInstance(String, ISecureRandomParameters, String) |
返回一个 |
| GetInstance(String, ISecureRandomParameters) |
返回一个 |
| GetInstance(String, Provider) |
返回一个 |
| GetInstance(String, String) |
返回一个 |
| GetInstance(String) |
返回一个 |
| GetSeed(Int32) |
返回给定的种子字节数,使用此类用于种子本身的种子生成算法计算。 |
| JavaFinalize() |
当垃圾回收确定不再引用该对象时,由对象上的垃圾回收器调用。 (继承自 Object) |
| Next(Int32) |
生成一个整数,其中包含用户指定的伪随机位数(右对齐,前导零)。 |
| NextBoolean() |
返回此随机数生成器序列中的下一个伪随机分布 |
| NextBytes(Byte[], ISecureRandomParameters) |
使用其他参数生成用户指定的随机字节数。 |
| NextBytes(Byte[]) |
生成随机字节并将其放入用户提供的字节数组中。 (继承自 Random) |
| NextDouble() |
返回下一个伪随机值,在此随机数生成器的序列之间 |
| NextFloat() |
返回下一个伪随机值,在此随机数生成器的序列之间 |
| NextGaussian() |
返回下一个伪随机数,高斯(“正常”)分布 |
| NextInt() |
返回此随机数生成器序列中的下一个伪随机分布 |
| NextInt(Int32) |
返回从此随机数生成器序列中绘制的伪随机值(非独占)与指定值(独占)之间的一个伪随机分布 |
| NextLong() |
返回此随机数生成器序列中的下一个伪随机分布 |
| Notify() |
唤醒正在等待此对象的监视器的单个线程。 (继承自 Object) |
| NotifyAll() |
唤醒正在等待此对象的监视器的所有线程。 (继承自 Object) |
| Reseed() |
使用从其 entropy 源读取的 entropy 输入来重新设置 |
| Reseed(ISecureRandomParameters) |
使用从其 entropy 源中读取的 entropy 输入和附加参数进行重新分配 |
| SetHandle(IntPtr, JniHandleOwnership) |
设置 Handle 属性。 (继承自 Object) |
| SetSeed(Byte[]) |
用给定种子重新设定此随机对象。 |
| SetSeed(Int64) |
使用单个 |
| ToArray<T>() |
此类提供加密强随机数生成器(RNG)。 (继承自 Object) |
| ToString() |
返回对象的字符串表示形式。 (继承自 Object) |
| UnregisterFromRuntime() |
此类提供加密强随机数生成器(RNG)。 (继承自 Object) |
| Wait() |
使当前线程等待,直到唤醒它,通常是通过 em 通知/em< 或 >em<interrupted>/em<。><> (继承自 Object) |
| Wait(Int64, Int32) |
使当前线程等待直到唤醒,通常是通过 <em>通知</em> 或 <em interrupted>/em<>,或直到经过一定数量的实时。 (继承自 Object) |
| Wait(Int64) |
使当前线程等待直到唤醒,通常是通过 <em>通知</em> 或 <em interrupted>/em<>,或直到经过一定数量的实时。 (继承自 Object) |
显式接口实现
| 名称 | 说明 |
|---|---|
| IJavaPeerable.Disposed() |
此类提供加密强随机数生成器(RNG)。 (继承自 Object) |
| IJavaPeerable.DisposeUnlessReferenced() |
此类提供加密强随机数生成器(RNG)。 (继承自 Object) |
| IJavaPeerable.Finalized() |
此类提供加密强随机数生成器(RNG)。 (继承自 Object) |
| IJavaPeerable.JniManagedPeerState |
此类提供加密强随机数生成器(RNG)。 (继承自 Object) |
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
此类提供加密强随机数生成器(RNG)。 (继承自 Object) |
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
此类提供加密强随机数生成器(RNG)。 (继承自 Object) |
| IJavaPeerable.SetPeerReference(JniObjectReference) |
此类提供加密强随机数生成器(RNG)。 (继承自 Object) |
扩展方法
| 名称 | 说明 |
|---|---|
| GetJniTypeName(IJavaPeerable) |
获取实例 |
| JavaAs<TResult>(IJavaPeerable) |
尝试强制 |
| JavaCast<TResult>(IJavaObject) |
执行 Android 运行时检查的类型转换。 |
| JavaCast<TResult>(IJavaObject) |
此类提供加密强随机数生成器(RNG)。 |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
尝试强制 |