従量制アプリケーションである C# 2.0 デスクトップ アプリケーションの登録コードを作成しようとしています。登録コードは、その中に int 値を隠す必要があります (int 値は、アプリケーションの使用回数を表します)。
私のマシンからコードを生成するために、名前、乱数、および使用回数を入力として使用する別のアプリケーションがあります。例えば:
Name: BOBSMITH
Random number: 51728
Number of Uses: 50
Concatenated String: BOBSMITH_51728_50
連結された文字列 (MD5 ハッシュなど) でハッシュを実行すると、次のような 32 の 16 進文字列 (Reg コードと呼びます) が得られます。
ABCD 1234 EFGH 5678 IJKL 9012 MNOP 3456
さて、私のユーザー側では、アプリケーションを登録するときに、登録コードを確認し、登録コード/名前/乱数から使用回数を決定する必要があります。したがって、ユーザーは次の値を入力します。
Name: BOBSMITH
Random Number: 51728
Reg Code: ABCD 1234 EFGH 5678 IJKL 9012 MNOP 3456
私の質問:私のアプリケーションはどのように判断できますか (名前、乱数、および登録コードのみに基づいて):
- 登録コードが正しいこと
- 私のマシンから最初に与えられた使用の数
私が考えた簡単なアイデアの 1 つは、名前と乱数のみに基づいてハッシュを生成し (コード A と呼びましょう)、このハッシュに使用回数を追加することです (コード B)。例えば:
Code A: ABCD 1234 EFGH 5678 IJKL 9012 MNOP **1184**
Code B: ABCD 1234 EFGH 5678 IJKL 9012 MNOP **11B6**
コード B からコード A を引くと、50 になります。したがって、ユーザーは次の値を入力します。
Name:BOBSMITH
Random Number: 51728
Reg Code: ABCD 1234 EFGH 5678 IJKL 9012 MNOP 11B6 (Code B)
Reg Code と使用回数を (ユーザー側から) 確認するために、私のアプリケーションは Name & Random Number のハッシュを取得します。これにより、Code A と同じ値が得られます。次に、Reg Code から Code A を減算します。ユーザーが入力し、差が 50 であることを確認します。したがって、ユーザーに 50 回の使用を与えることがわかります。ただし、このソリューションはあまりにも安全ではないようです。誰かの提案をいただければ幸いです。