繁体   English   中英

java代码的等效vb代码

[英]equivalent vb code for a java code

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

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

return Base64.encode(bytes);

一步一步的解释将是有用的,以便我可以在VB中重新创建此代码。 谢谢

使用代码片段,你可以得到这样的东西

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

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

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

所以,简而言之,

  1. 生成20个随机字节
  2. 使用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对生成的字节数组进行编码。 这可能用于以已知格式传输,存储或显示。

基本上上面的代码:

  1. 创建一个安全的随机数生成器(对于VB,请参阅下面的链接)
  2. 用随机字节填充长度为20的bytearray
  3. Base64对结果进行编码(你可以使用Convert.ToBase64String(...))

你应该在这里找到一些帮助: http//msdn.microsoft.com/en-us/library/system.security.cryptography.rngcryptoserviceprovider.aspx

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM