0

たとえば、多くのソフトウェアが使用するライセンスキーなどです。シーケンスに暗号で署名することを考えていたので、IDに4バイト、署名に8バイトを指定することもできましたが、適切なアルゴリズムが見つかりません。

私が必要としているのは、攻撃者が簡単に生成できないものですが、約20ASCIIバイト未満で保存されています。また、独自性にも自信を持つ必要があります。これは完全に安全である必要はなく、偶発的な攻撃に対してのみ安全です。

注:これは、AppEngineのJavaで行っています。

4

4 に答える 4

1

IDごとにGUIDを生成し、データベースで生成したGUIDを追跡するだけです。GUIDの世界は非常に大きいため、それぞれが一意になります。暗号化されていないので、生成されたものの人口が十分に多い人なら誰でも一致する可能性がありますが、それでも確率はごくわずかだと思います。

GUIDは128ビットで、Base64を使用して23バイトでエンコードできます。

于 2013-02-12T02:31:40.000 に答える
0

HMACのように聞こえます。ただし、おそらく手動で一意性を確保する必要があります。

于 2013-02-12T02:06:59.057 に答える
0

IDを含む値を文字列に計算し、秘密鍵と最大長を持つバイトベースのHDMACを使用します。暗号化する値に一意の部分があることを確認してください。これは、サーバー時間またはその他のIDである可能性があります。長さは、20文字の要件内に収まるかどうかをテストする必要があります。

于 2013-02-12T02:12:10.323 に答える
0

暗号化は可逆的であるため、出力は一意の入力に対して一意であることが保証されます。毎回同じキーを使用して、0、1、2、3、4、5などを暗号化するだけです。128ビット出力の場合、ECBモードでAESと128ビット数を使用します。他のモードでも同じIV/ノンスが必要になります。64ビット番号の場合はDESを使用します。他のサイズ番号の場合は、ヘイスティプディング暗号を使用するか、必要なサイズに合わせて独自の単純なFeistel暗号をロールします。

ECBは最も安全なモードではありませんが、ここで非常に高いレベルのセキュリティを探しているという印象はありません。

于 2013-02-12T15:24:20.223 に答える