这并不重要,在Windows XP和更高版本上,默认提供程序最终会调用相同的函数。2000年和未修补XP上的RNG主要在内部使用SHA1+RC4,它有一些
security issues
.
我刚刚在Windows 8上做了一些实验,我发现:
-
RtlGenRandom
(又名
advapi32!SystemFunction036
)呼叫
CRYPTBASE!SystemFunction036
&燃气轮机&燃气轮机&燃气轮机;
bcryptPrimitives!ProcessPrng
&燃气轮机&燃气轮机&燃气轮机;
bcryptPrimitives!AesRNG*
.
-
CryptGenRandom
电话
CRYPTSP!CryptGenRandom
&燃气轮机&燃气轮机&燃气轮机;
%provider%!CPGenRandom
&燃气轮机&燃气轮机&燃气轮机;
CRYPTBASE!系统功能036
.
%provider%
在我的测试中是rsaenh还是dssenh,但如果您特别要求第三方提供商,则可能是不同的实现。
-
BCryptGenRandom
电话
bcryptPrimitives!MSCryptGenRandom
&燃气轮机&燃气轮机&燃气轮机;
bcryptPrimitives!GenRandomAes
&燃气轮机&燃气轮机&燃气轮机;
bcryptPrimitives!AesRNG公司*
使用
BCRYPT_RNG_ALGORITHM
CNG算法标识符(
BCRYPT_RNG_DUAL_EC_ALGORITHM
结束于
bcryptPrimitives!GenRandomDualEcc
而是)。
这当然是可能会改变的未记录的实现细节,但我真的认为您不需要担心选择哪个函数。如果您的目标是Vista+,则可以使用BCrypt。
加密随机
不会被删除,它会破坏太多的应用程序,如果您支持,则应选择它<远景