このコードは、.NET では確実に機能しません。
Guid(Byte[])
コンストラクターは 16 バイト (Guid は 128 ビットであるため) を受け取る必要があり ます。そうしないと、ArgumentException がスローされます。あなたの文字列は 16 バイトをはるかに超えています。
ただし、そうは言っても、コンストラクターに渡された同じ 16 バイトを使用して、C# と Java が同じ UUID を生成することはありません。Java では、任意のバイト数をUUID
コンストラクターに渡すことができ、それらのバイトのハッシュが作成されます。言い換えると:
C# の場合:
Guid g = new Guid(new Byte[] {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16});
Console.WriteLine(g);
以下とは異なる値を生成します。
UUID u = UUID.nameUUIDFromBytes(new byte[] {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16});
System.out.println(u);
...ジャワで。
おそらく、.NET のByte[16]
コンストラクターを Java に実装するか、Java のハッシュ コンストラクターを .NET に実装できますが、両方のプラットフォームで UUID の文字列表現を使用することをお勧めします"190c4c10-5786-3212-9d85-018939108a6c"
。
文字列からハッシュを作成しようとしている場合は、MD5 クラスにチェックインすることをお勧めします。次のようなものが必要です。
var md5 = System.Security.Cryptography.MD5.Create();
byte[] inputBytes = System.Text.Encoding.UTF8.GetBytes(cleartext);
byte[] hashBytes = md5.ComputeHash(inputBytes);
MD5 は標準アルゴリズムであり、.NET と Java の両方で同じ文字列に対して同じハッシュを生成します。