谁能告诉我这段Java代码到底是做什么的?
SecureRandom random = SecureRandom.getInstance("SHA1PRNG");
byte[] bytes = new byte[20];
synchronized (random)
{
random.nextBytes(bytes);
}
return Base64.encode(bytes);
逐步解释将很有用,以便我可以在 VB 中重新创建此代码。谢谢
使用代码片段,你可以得到这样的东西
将 randomNumGen 调暗为 RandomNumberGenerator = RNGCryptoServiceProvider.Create() 将 randomBytes(20) 调暗为字节 randomNumGen.GetBytes(randomBytes) 返回 Convert.ToBase64String(randomBytes)
这将创建一个随机数生成器 (SecureRandom)。然后它创建一个字节数组(byte[] bytes),长度为 20 个字节,并用随机数据填充它。
然后使用 BASE64 对其进行编码并返回。
所以,简而言之,
它创建一个基于 SHA1 的随机数生成器 (RNG),然后 Base64 对 RNG 返回的接下来的 20 个字节进行编码。
我不能告诉你为什么它会这样做但是没有更多的上下文:-)。
此代码获得一个长度为 20 字节的加密强随机数,然后 Base64 对其进行编码。这里有很多 Java 库代码,所以你的猜测和我的猜测一样好,如何在 VB 中做到这一点。
SecureRandom random = SecureRandom.getInstance("SHA1PRNG");
byte[] bytes = new byte[20];
synchronized (random) { random.nextBytes(bytes); }
return Base64.encode(bytes);
第一行创建SecureRandom类的一个实例。此类提供了一个加密强的伪随机数生成器。
第二行声明一个长度为 20 的字节数组。
第三行将接下来的 20 个随机字节读入第 2 行创建的数组中。它在 SecureRandom 对象上进行同步,这样就不会与可能正在使用该对象的其他线程发生冲突。从这段代码中看不出为什么需要这样做。
第四行 Base64 对生成的字节数组进行编码。这可能用于以已知格式传输、存储或显示。
基本上就是上面的代码:
你应该在这里找到一些帮助:http: //msdn.microsoft.com/en-us/library/system.security.cryptography.rngcryptoserviceprovider.aspx