SecureRandom 类

定义

此类提供加密强随机数生成器(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
继承
SecureRandom
属性

注解

此类提供加密强随机数生成器(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 以前调用过,则不会进行这种自播。

可以随时通过调用reseedsetSeed方法重新分配 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)

创建一个 SecureRandom 对象。

属性

名称 说明
Algorithm

返回此 SecureRandom 对象实现的算法的名称。

Class

返回此 Object的运行时类。

(继承自 Object)
Handle

基础 Android 实例的句柄。

(继承自 Object)
InstanceStrong

返回 SecureRandom 对象。

JniIdentityHashCode

此类提供加密强随机数生成器(RNG)。

(继承自 Object)
JniPeerMembers

此类提供加密强随机数生成器(RNG)。

Parameters

返回此SecureRandom实例的有效SecureRandomParameters值。

PeerReference

此类提供加密强随机数生成器(RNG)。

(继承自 Object)
Provider

返回此 SecureRandom 对象的提供程序。

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)

返回一个 SecureRandom 对象,该对象实现指定的随机数生成器 (RNG) 算法并支持指定的 SecureRandomParameters 请求。

GetInstance(String, ISecureRandomParameters, String)

返回一个 SecureRandom 对象,该对象实现指定的随机数生成器 (RNG) 算法并支持指定的 SecureRandomParameters 请求。

GetInstance(String, ISecureRandomParameters)

返回一个 SecureRandom 对象,该对象实现指定的随机数生成器 (RNG) 算法并支持指定的 SecureRandomParameters 请求。

GetInstance(String, Provider)

返回一个 SecureRandom 对象,该对象实现指定的随机数生成器 (RNG) 算法。

GetInstance(String, String)

返回一个 SecureRandom 对象,该对象实现指定的随机数生成器 (RNG) 算法。

GetInstance(String)

返回一个 SecureRandom 对象,该对象实现指定的随机数生成器 (RNG) 算法。

GetSeed(Int32)

返回给定的种子字节数,使用此类用于种子本身的种子生成算法计算。

JavaFinalize()

当垃圾回收确定不再引用该对象时,由对象上的垃圾回收器调用。

(继承自 Object)
Next(Int32)

生成一个整数,其中包含用户指定的伪随机位数(右对齐,前导零)。

NextBoolean()

返回此随机数生成器序列中的下一个伪随机分布 boolean 值。

(继承自 Random)
NextBytes(Byte[], ISecureRandomParameters)

使用其他参数生成用户指定的随机字节数。

NextBytes(Byte[])

生成随机字节并将其放入用户提供的字节数组中。

(继承自 Random)
NextDouble()

返回下一个伪随机值,在此随机数生成器的序列之间0.01.0从中统一分布double的值。

(继承自 Random)
NextFloat()

返回下一个伪随机值,在此随机数生成器的序列之间0.01.0从中统一分布float的值。

(继承自 Random)
NextGaussian()

返回下一个伪随机数,高斯(“正常”)分布 double 值,其平均值 0.0 和标准偏差 1.0 与此随机数生成器的序列。

(继承自 Random)
NextInt()

返回此随机数生成器序列中的下一个伪随机分布 int 值。

(继承自 Random)
NextInt(Int32)

返回从此随机数生成器序列中绘制的伪随机值(非独占)与指定值(独占)之间的一个伪随机分布 int 值。

(继承自 Random)
NextLong()

返回此随机数生成器序列中的下一个伪随机分布 long 值。

(继承自 Random)
Notify()

唤醒正在等待此对象的监视器的单个线程。

(继承自 Object)
NotifyAll()

唤醒正在等待此对象的监视器的所有线程。

(继承自 Object)
Reseed()

使用从其 entropy 源读取的 entropy 输入来重新设置 SecureRandom 此值。

Reseed(ISecureRandomParameters)

使用从其 entropy 源中读取的 entropy 输入和附加参数进行重新分配 SecureRandom

SetHandle(IntPtr, JniHandleOwnership)

设置 Handle 属性。

(继承自 Object)
SetSeed(Byte[])

用给定种子重新设定此随机对象。

SetSeed(Int64)

使用单个 long 种子设置此随机数生成器的种子。

(继承自 Random)
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)

获取实例 self类型的 JNI 名称。

JavaAs<TResult>(IJavaPeerable)

尝试强制self键入TResult,检查强制是否在Java端有效。

JavaCast<TResult>(IJavaObject)

执行 Android 运行时检查的类型转换。

JavaCast<TResult>(IJavaObject)

此类提供加密强随机数生成器(RNG)。

TryJavaCast<TResult>(IJavaPeerable, TResult)

尝试强制self键入TResult,检查强制是否在Java端有效。

适用于