Saya rasa artikel ini mungkin sangat relevan dengan apa yang Anda lakukan. Jika memang Anda ingin "menganonimkan" SSN karena alasan keamanan dan tanggung jawab hukum, maka hashing saja tidak cukup.
Hanya hashing mereka akan menjadi proses yang sepenuhnya deterministik, jadi untuk secara efektif "menutupi" SSN individu, prosesnya perlu diacak. Jika tidak, Anda bisa melakukan brute force melalui semua kemungkinan kombinasi SSN (yang akan membutuhkan lebih sedikit pekerjaan daripada mencoba memaksa fungsi hash) dan mencari nilai yang cocok.
Untuk melihat mengapa penangguhan ini, ambil contoh paling sederhana bahwa SSN hanya dapat mengambil dua nilai, 0 dan 1. Terlepas dari kualitas dan kekuatan fungsi hash, pada akhirnya hanya akan ada dua hasil yang mungkin dan mudah untuk dilihat yang mana.
Ini adalah permainan lama mengapa Anda tidak boleh hash mis. password secara langsung tanpa melakukan preprocessing terlebih dahulu. Data yang mendasarinya tidak mengandung cukup entropi dan oleh karena itu akan menjadi sasaran empuk untuk pencarian di tabel yang telah dihitung sebelumnya.
Begitu SSN Anda menjadi pribadi dan rahasia (tidak ada di setiap negara, jadi maafkan pertanyaan bodoh saya di komentar :), praktik terbaik yang sama yang juga digunakan untuk penyimpanan kata sandi juga harus berlaku untuk kasus khusus Anda, mis. algoritma hashing adaptif yang mengkompensasi kurangnya entropi awal seperti bcrypt, scrypt, dan PBKDF2 (yang sudah direkomendasikan oleh Marcus Adams).