1

乱数を生成したいと思います-同じシードが与えられた場合を除いて、それらは常に同じでなければなりません。これはどのように行うことができますか?

たとえば、'I like turtles' というシードが与えられた場合、いつ/何回呼び出されても、1234 などの数値を生成する必要があります。これはセキュリティ アプリケーションに必要です。

4

3 に答える 3

2

これがまさに疑似乱数ジェネレーター (PRNG) の仕組みです。同じ方法でシードすると、同じ一連の疑似乱数が生成されます。

Randomクラスのコンストラクターのドキュメントを見てください。

異なる Random オブジェクトに同一のシード値を指定すると、各インスタンスは同一の乱数列を生成します。

質問の例のように、PRNG は文字列ではなく数値シードを使用することに注意してください。Randomまた、暗号的に安全な PRNG が必要な場合は、シードに関する同じ原則が適用されますが、以外のクラスを使用する必要があります。

于 2013-04-01T15:23:46.197 に答える
0

セキュリティをするならライブラリを使った方が断然いいのですが、どうしても自分でやらないといけないのなら…

ハッシュコードを計算したいようです。

これは、文字列から MD5 ハッシュ コードを生成するための情報です。

そのページのコードサンプルは次のとおりです

public static  string CalculateMD5Hash(string strInput)
{
  MD5 md5 = System.Security.Cryptography.MD5.Create();
  byte[] inputBytes = System.Text.Encoding.ASCII.GetBytes(strInput);
  byte[] hash = md5.ComputeHash(inputBytes);            

  StringBuilder sb = new StringBuilder();           
  for (int i = 0; i < hash.Length; i++)           
  {               
    sb.Append(hash[i].ToString("x2")); 
  }         
  return sb.ToString();       
}
于 2013-04-01T15:33:59.073 に答える