このコードを使用してハッシュを生成していると仮定します。
static void Main(string[] args) {
string id = Guid.Parse("8681941A-76C2-4120-BC34-F800B5AAB5A5".ToLower()).ToString();
string date = DateTime.Today.ToString("yyyy-MM-dd");
Console.WriteLine(id);
Console.WriteLine(date);
using (System.Security.Cryptography.SHA512Managed hashTool =
new System.Security.Cryptography.SHA512Managed()) {
Byte[] PasswordAsByte = System.Text.Encoding.UTF8.GetBytes(string.Concat(id, date));
Byte[] EncryptedBytes = hashTool.ComputeHash(PasswordAsByte);
hashTool.Clear();
Console.WriteLine(Convert.ToBase64String(EncryptedBytes));
}
Console.ReadLine();
}
実際の例では、サンプルに示されているように、GUIDと日付を使用してハッシュを生成します。これらの値をデータベースから取得します。
このアプローチで異なる値で同じハッシュ結果を得ることが可能でしょうか?
編集:
私が示したように、データベースから値を取得します。ご想像のとおり、Guidは一意のIDキーです(奇跡に遭遇せず、SQLサーバーが同じGuidを複数回生成する場合)。また、日時の値は、レコードの支払い期日となります。ここでデモンストレーションを行いましたDateTime.Todayが、これを本番環境で使用することは絶対にありません。