2

ヘッダー行を持つパイプ区切りのテキスト ファイルがあります。(質問でCSVと言って、もう少しすぐに理解できるようにしました...ほとんどのソリューションはどちらの形式にも適用できると思います。)

ファイルは次のようになります。

COLUMN1|COLUMN2|COLUMN3|COLUMN4|...|
Field1|Field2|Field3|Field4|...|
...

ファイル内の他のエントリに影響を与えずに、(たとえば) 列 3 と 9 のデータを隠す必要があります。

SHA1 や MD5 などのハッシュ アルゴリズムを使用してこれを実行したいので、同じ文字列がどこにあっても同じハッシュ値に解決されます。

編集 - これを行う理由
サードパーティにデータを送信する必要があり、特定の列には機密情報 (顧客名など) が含まれています。ファイルが完全である必要があり、文字列が置き換えられる場合は、遭遇するたびに同じ方法で行う必要があります (マッピングまたはグループ化が残るようにするため)。元に戻すのが難しいだけで、軍事暗号化は必要ありません。これを断続的に行う必要があるため、スクリプト化されたソリューションが理想的です。
/編集

コマンド ライン ツールまたはスクリプトを使用してこれを実現する最も簡単な方法は何ですか?

できれば、バッチ スクリプトまたは PowerShell スクリプトを使用したいと考えています。追加のソフトウェアを必要としないためです...

4

2 に答える 2

1

試す

(Import-Csv .\my.csv -delimiter '|' ) | ForEach-Object{     
    $_.column3 = $_.column3.gethashcode()
    $_.column4 = $_.column4.gethashcode()
    $_    
} | Export-Csv .\myobfuscated.csv -NoTypeInformation -delimiter '|'
于 2013-03-01T15:16:39.723 に答える
0
$md5 = new-object -TypeName Security.Cryptography.MD5CryptoServiceProvider
$utf8 = new-object -TypeName Text.UTF8Encoding

import-csv original.csv -delimiter '|' |
foreach {   
    $_.Column3 = [BitConverter]::ToString($md5.ComputeHash($utf8.GetBytes($_.Column3)))
    $_.Column9 = [BitConverter]::ToString($md5.ComputeHash($utf8.GetBytes($_.Column9)))
    $_
} |
export-csv encrypted.csv -delimiter '|' -noTypeInformation
于 2013-03-01T15:16:47.250 に答える