4

このJavaコードが正確に何をするのか誰か教えてもらえますか?

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

return Base64.encode(bytes);

このコードを VB で再作成できるように、段階的な説明が役に立ちます。ありがとう

4

5 に答える 5

5

コードスニペットを使用すると、このようなものに到達できます

Dim randomNumGen As RandomNumberGenerator = RNGCryptoServiceProvider.Create()
Dim randomBytes(20) バイトとして
randomNumGen.GetBytes(ランダムバイト)
Convert.ToBase64String(randomBytes) を返す
于 2008-09-16T14:02:01.743 に答える
3

これにより、乱数ジェネレーター (SecureRandom) が作成されます。次に、長さ 20 バイトのバイト配列 (byte[] バイト) を作成し、ランダム データを入力します。

これは、BASE64 を使用してエンコードされ、返されます。

つまり、一言で言えば、

  1. ランダムな 20 バイトを生成する
  2. Base 64 を使用してエンコードする
于 2008-09-16T13:56:11.790 に答える
1

SHA1 ベースの乱数ジェネレーター (RNG) を作成し、RNG から返された次の 20 バイトを Base64 でエンコードします。

なぜこれを行うのかは、コンテキストがないとわかりません:-)。

于 2008-09-16T13:57:00.790 に答える
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クラスのインスタンスを作成します。このクラスは、暗号的に強力な疑似乱数ジェネレーターを提供します。

2 行目では、長さ 20 のバイト配列を宣言しています。

3 行目は、次の 20 ランダム バイトを 2 行目で作成された配列に読み込みます。オブジェクトを使用している可能性のある他のスレッドからの競合がないように、SecureRandom オブジェクトで同期します。なぜこれを行う必要があるのか​​ 、このコードからは明らかではありません。

4 行目は、結果のバイト配列を Base64 でエンコードします。これはおそらく、既知の形式で送信、保存、または表示するためのものです。

于 2008-09-16T14:02:00.433 に答える
0

基本的に上記のコード:

  1. 安全な乱数ジェネレーターを作成します (VB については、以下のリンクを参照してください)。
  2. 長さ 20 の bytearray をランダムなバイトで埋めます
  3. Base64 で結果をエンコードします (おそらく Convert.ToBase64String(...) を使用できます)。

ここでいくつかのヘルプを見つける必要があります: http://msdn.microsoft.com/en-us/library/system.security.cryptography.rngcryptoserviceprovider.aspx

于 2008-09-16T14:06:09.847 に答える