3

ライセンスシステムの情報を暗号化し、ユーザーが結果を入力できるようにしたい。

更新:この操作は、可逆(復号化可能)である必要があります。たとえば、暗号化(ComputerID + ProductID)->(入力可能な標準のASCII文字。理想的にはAZだけでもかまいません)。

これまでのところ、暗号化されたテキストをHEXに変換することでした(つまり、0〜Fの任意の文字です)が、これにより文字数が2倍になります。

私はVB6を使用しています。

(Input $(x)とKey $(x))の各ペアに対して何らかの操作を行ってから、MODを実行してASCII値の範囲(おそらく0-9-AZ)内に保つことを考えています。

良いアルゴリズムの提案はありますか?

4

3 に答える 3

5

Base64の「暗号化」を調べてください。

Base 64は、数値を64の異なるASCII文字に変換します。16進数は16の異なるASCII文字のみです... Base64をよりコンパクトにし、探しているものを作成します。

編集:VB6でこれを行うためのコードはここで入手できます:http ://www.nonhostile.com/howto-encode-decode-base64-vb6.asp

以下のFuzzyLollipopによると、Base32はさらに優れたオプションのように見えます。その例を見つけることができればボーナスポイント。

編集: まだ試していませんが、VB6用のBase32の例を見つけました。-粘土

于 2010-01-23T21:29:22.273 に答える
2

暗号化されたバイトをHEX、またはBase32またはBase64でエンコードします

于 2010-01-23T21:29:48.297 に答える
0

これをリバーシブルにしますか?暗号化されたテキストからIDを回復しますか?その場合、キーと入力文字列をどのように組み合わせるかが重要です。

通常、各バイトペアをXORし(Unicodeの問題を回避するためにバイト配列を操作します)、入力より短い場合はキー文字列を循環します。次に、Base Nエンコーディング(32、64など)を使用してライセンス文字列を生成できます。

どちらの操作も元に戻すことができます。ベースN文字列からXORされた文字列を復元してから、キーと再度XORして、元のIDを取得できます。

操作を逆にする必要がない場合は、キーとIDの畳み込みで十分です。XORは最も単純です。

于 2010-01-23T22:26:41.027 に答える