0

C# で記述されたチェックアウト用のバウチャー コード システムをセットアップしています。プロダクト キーのような、同じことを行う固有のバウチャーを配布できるようにしたいと考えています。

同じ結果を得るために何らかの方法で「ハッシュ」する一意の (かなり短く、できれば英数字の) 文字列を生成する方法はありますか?

つまり、定義済みのバウチャー コードから始めて、逆ハッシュの複数の結果を取得できますか?

うまく説明できていない場合は申し訳ありませんが、必要に応じてさらに情報を提供できます。

編集:事前定義されたコードでルックアップ テーブルを使用できることはわかっていますが、これらのコードを自動生成してシステムを簡単にスケーリングできるようにする方法があるかどうか疑問に思っていました。

4

3 に答える 3

3

ここに考えがあります...

秘密のパスワードで開始します: "100:mypass:yourpass"

それからmd5それ:あなたは得るでしょう

md5("10:mypass:yourpass")=f6ff5421b31e609c7dcd19c4a462caa0

'key 1'=>  left 16 chars of md5 = 'f6ff5421b31e60'

  run the right 16 chars of the md5 it into another md5:

md5('7dcd19c4a462caa0') = 582fbfb7a035d08094cdef57d88f720e

'key 2' => '582fbfb7a035d080'

[repeat again here, and again... and again, ]

...

これに関する「配布」ポイントについては不明です。たとえば、POS タイプのギフト カードまたはバウチャー カード システムで実行されるかどうかなどですが、「パスワード」に 3 つのコンポーネントを入れていることに気付いた場合、この値には合計が含まれる可能性があります。正当なキー (「:」で分割され、100 個の有効なキーが途切れる)、システム (ディストリビューター) パスワード、および「良い」キーで「検証」または「一致」するために必要なローカル システム パスワード。クイック スキャンを実行してキーが存在するかどうかを確認し、無効化ルーチンをローカルに記述できます。私の数学の天才の友人は、おそらくもっと安全で効果的な方法があると言うでしょうが、ねえ... これはあなたが求めたものですよね? 私は単純な男で、単純なものが好きです...pass=> "100:1000:pass1:pass2"そうすれば、100->1000 番目の md5 の部分キーをテストできます...乾杯!!

于 2012-11-15T11:04:22.683 に答える
1

あなたが探しているのは、完全ハッシュ関数と呼ばれるものです。

ここでは、大規模なキー セットの完全なハッシュを効率的に生成する方法に関する記事を見つけることができます。

ここでは、ac# 最小完全ハッシュ関数ジェネレーターを見つけることができます。

于 2012-11-12T12:06:20.340 に答える
0

現在の日付/時刻から生成されたハッシュを使用できます

<!-- language: c# -->
byte[] ByteArray = Encoding.UTF8.GetBytes(System.DateTime.Now.ToString());
MD5 md5 = MD5.Create();
byte[] ByteResult = md5.ComputeHash(ByteArray);
StringBuilder result = new StringBuilder(ByteResult.Length * 2);
for (int i = 0; i < ByteResult.Length; i++)
    result.Append(ByteResult[i].ToString("X2"));
Console.WriteLine(result.ToString());
于 2012-11-12T12:11:01.473 に答える