0

8 桁のフィールドを 16 文字 (またはそれ以上) のフィールドに暗号化したい (復号化する心配はありません) があります。暗号化されたフィールドを使用して報告機関に送信できるようにするために、これが必要です。

4

2 に答える 2

1

この「暗号化」の背後にある目的についてあまり知らなくても、ここに私が提案するものがあります(あなたの目標が何であるかについてのいくつかの保守的でセキュリティを維持する仮定に基づいています):

  1. 乱数を選択します。それを呼び出しますR。この数値は、少なくとも 32 ビット長であることが望ましいです。
  2. 持っている 8 桁の識別子ごとに、文字列 " <digits of R><8 digit identifier>" を形成します。
  3. 暗号的に安全なハッシュ アルゴリズムを使用して、手順 2 で形成された文字列のハッシュを取得します。
  4. 手順 3 のハッシュを 16 進文字の文字列としてフォーマットします。
  5. 「通報機関」に通報する識別子は、手順4の16進文字列を使用してください。

このスキームの利点は、値を覚えている限り、R常にすべての 8 桁の識別子を同じ 16 進文字の識別子にマップできることです。これは、アプリケーションで重要な場合とそうでない場合があります。

もちろん、このスキームは、revise マッピングを実行する必要がなく、代理店が識別子を解読したくないことを前提としています。言い換えれば、あなたの目標は単に代理店に識別子 I を与えるのではなく、同等の識別子 I' を与えることであると想定しています。

于 2013-01-31T18:34:50.817 に答える
1

復号化は必要ないため、暗号化を使用する代わりに (不可逆的に) ハッシュすることができます。PHP では、ハッシュfnv16416 文字のハッシュを返すハッシュ アルゴリズムを使用してこれを行うことができます。

また、16 文字を超えるハッシュ アルゴリズムが他にもいくつかあります。hash_algosを使用して、システムで利用できるものを確認できます。これを行うスクリプトを次に示します。

于 2013-01-31T17:18:42.667 に答える