6

問題の説明: 私は、人々の電話番号情報を列の 1 つとして含む、非常に機密性の高いデータセットを扱っているところです。それらをいくつかのエンコードされた値として変換し、分析を行うには、(それらの暗号化/ハッシュ関数) を適用する必要があります。一方向のハッシュにすることもできます。つまり、暗号化されたデータを処理した後、元の電話番号に戻すことはありません。基本的に、電話番号を取得して、処理を実行できるランダムな値に変換するアノニマイザーを探しています。このプロセスについて最善の方法を提案してください。使用するのに最適なアルゴリズムに関する推奨事項は大歓迎です。

更新: データセットのサイズ 私のデータセットは、数百 GB のサイズで非常に巨大です。

更新: センシティブ センシティブ とは、電話番号を分析の一部にすべきではないことを意味していました。したがって、基本的には一方向ハッシュ関数が必要ですが、冗長性はありません - 各電話番号は一意の値にマップする必要があります --2 つの電話番号は同じ値にマップされません。

更新: 実装 ?

あなたの答えをありがとう.私は精巧な実装を探しています.私はハッシュのためにpythonのhashlibライブラリを調べていました.それはあなたが提案したのと同じ一連のステップを必ずしも実行しますか? ここにリンクがあります

できれば Python で、プロセスを達成するためのサンプル コードをいくつか教えてもらえますか?

4

4 に答える 4

4

データ セット (16 または 32 バイト) のキーを生成し、秘密にします。このキーを使用してデータにHmac-sha1を使用し、それを base 64 でエンコードすると、電話番号ごとに (キーなしで) 元に戻せないランダムな一意の文字列ができます。

Keyczar を使用した例 (256 ビット鍵の Hmac-Sha1 ) :

ランダムな秘密鍵を作成します:

$> python keyczart.py create --location=path_to_key_set --purpose=sign
$> python keyczart.py addkey --location=path_to_key_set --status=primary

電話番号を匿名化:

from keyczar import keyczar

def anonymize(phone_num):
  signer = keyczar.Signer.Read("path_to_key_set");
  return signer.Sign(phone_num)
于 2013-04-08T21:07:01.093 に答える
1

データをそれぞれの列でソートし、個別の値のカウントを開始します...実際の値をそれぞれのカウンター値に置き換えます...衝突のない...一方向...

于 2013-04-08T23:05:24.477 に答える