Java代码的等效VB代码

时间:2020-03-05 18:56:00  来源:igfitidea点击:

谁能告诉我这个Java代码到底是做什么的?

SecureRandom random = SecureRandom.getInstance("SHA1PRNG");
byte[] bytes = new byte[20];
synchronized (random)
{
    random.nextBytes(bytes);
}

return Base64.encode(bytes);

分步说明将非常有用,这样我就可以在VB中重新创建此代码。谢谢

解决方案

回答

这将创建一个随机数生成器(SecureRandom)。然后,它创建一个字节数组(byte []个字节),长度为20个字节,并用随机数据填充它。

然后使用BASE64对其进行编码并返回。

简而言之,

  • 产生20个随机字节
  • 使用Base 64编码

回答

它创建一个基于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对所得的字节数组进行编码。这可能是为了以已知格式传输,存储或者显示。

回答

使用代码片段,我们可以得到如下内容

Dim randomNumGen As RandomNumberGenerator = RNGCryptoServiceProvider.Create()
Dim randomBytes(20) As Byte
randomNumGen.GetBytes(randomBytes)
return Convert.ToBase64String(randomBytes)

回答

基本上上面的代码:

  • 创建一个安全的随机数生成器(有关VB,请参见下面的链接)
  • 用随机字节填充长度为20的字节数组
  • Base64对结果进行编码(我们可以使用Convert.ToBase64String(...))

我们应该在这里找到一些帮助:
http://msdn.microsoft.com/zh-CN/library/system.security.cryptography.rngcryptoserviceprovider.aspx