有谁能告诉我这个Java代码到底做了什么?
SecureRandom random = SecureRandom.getInstance("SHA1PRNG");
byte[] bytes = new byte[20];
synchronized (random)
{
random.nextBytes(bytes);
}
return Base64.encode(bytes);
逐步解释将非常有用,以便我可以在VB中重新创建此代码。感谢
答案 0 :(得分:5)
使用代码段,你可以得到类似的东西
Dim randomNumGen As RandomNumberGenerator = RNGCryptoServiceProvider.Create() Dim randomBytes(20) As Byte randomNumGen.GetBytes(randomBytes) return Convert.ToBase64String(randomBytes)
答案 1 :(得分:3)
这会创建一个随机数生成器(SecureRandom)。然后它创建一个字节数组(byte []字节),长度为20个字节,并用随机数据填充它。
然后使用BASE64对其进行编码并返回。
所以,简而言之,
答案 2 :(得分:1)
它创建一个基于SHA1的随机数生成器(RNG),然后Base64对RNG返回的下一个20个字节进行编码。
我无法告诉你它为什么会这样做,但没有更多的背景: - )。
答案 3 :(得分:1)
此代码获取一个加密强大的随机数,长度为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对生成的字节数组进行编码。这可能是以已知格式传输,存储或显示。
答案 4 :(得分:0)
基本上是上面的代码:
你应该在这里找到一些帮助: http://msdn.microsoft.com/en-us/library/system.security.cryptography.rngcryptoserviceprovider.aspx