I. Memahami Sumber dan Dampak Data Duplikat
Pertama, kita perlu memahami mengapa terjadi begitu banyak data duplikat. Saat membangun file kamus, mungkin ada pengumpulan data dari berbagai sumber yang memiliki tumpang tindih sebagian. Misalnya, saat mengumpulkan data dari berbagai daftar kata, kumpulan kata sandi umum, daftar kombinasi karakter, dll., beberapa kata dasar atau kombinasi kata sandi sederhana mungkin muncul di beberapa sumber.
Data duplikat ini memiliki banyak dampak negatif. Dari perspektif penyimpanan, ruang 2TB sudah sangat besar. Jika ada banyak konten duplikat di dalamnya, maka ruang penyimpanan yang berharga akan terbuang sia-sia. Saat menggunakan file kamus ini untuk peretasan kata sandi atau operasi lainnya, konten duplikat akan menyebabkan pencarian dan perbandingan yang tidak perlu. Misalnya, saat peretasan kata sandi, algoritma perlu membandingkan setiap baris dalam kamus dengan kata sandi target, dan konten duplikat akan meningkatkan jumlah perbandingan, sehingga memperlambat seluruh proses peretasan.
II. Metode Penyaringan Menggunakan Alat Pengolah Teks
Menggunakan alat di bawah Windows
- Menggunakan PowerShell
- Di Windows, PowerShell menyediakan banyak fungsi pengolahan teks. Kita dapat menggunakan skrip PowerShell berikut untuk menghapus baris duplikat:
```powershell
$lines = Get - Content "dictionary.txt"
$uniqueLines = @()
foreach ($line in $lines) {
if ($uniqueLines -notcontains $line) {
$uniqueLines += $line
}
}
$uniqueLines | Set - Content "unique_dictionary.txt"
```
Script ini pertama-tama membaca semua baris dalam "dictionary.txt" ke dalam sebuah array "$lines". Kemudian, melalui sebuah loop, menelusuri setiap baris dan jika sebuah baris tidak ada dalam array baru "$uniqueLines", maka akan menambahkannya ke array baru ini. Terakhir, menyimpan isi array baru ke dalam "unique_dictionary.txt".
Algoritma Pembagian
- Karena file dictionary kami sangat besar (2T), memprosesnya secara langsung mungkin mengalami masalah seperti kehabisan memori. Algoritma pembagian dapat menyelesaikan masalah ini dengan baik. Kami dapat membagi file besar ini menjadi beberapa subfile yang lebih kecil. Misalnya, kami dapat membaginya berdasarkan jumlah baris atau ukuran file.
- Kemudian, melakukan pemfilteran duplikat untuk setiap subfile. Menggabungkan kembali subfile yang telah diproses menjadi satu file. Selama proses penggabungan, perlu memeriksa lagi apakah ada duplikat, karena mungkin ada duplikat antar subfile.
IV. Memverifikasi Hasil Pemfilteran
Setelah pemfilteran duplikat selesai, kami perlu memverifikasi apakah hasilnya benar. Kami dapat menggunakan beberapa metode sederhana, seperti memilih beberapa baris secara acak dan memeriksa berapa kali baris tersebut muncul di file asli dan file yang telah difilter. Jika muncul beberapa kali di file asli tetapi hanya sekali di file yang telah difilter, maka pemfilteran telah berhasil.
Selain itu, kami juga dapat membandingkan ukuran file asli dan file yang telah difilter. Jika ukuran file yang telah difilter jauh lebih kecil daripada file asli dan dalam pengujian selanjutnya (seperti menggunakan file dictionary ini untuk pencarian kata sandi sederhana dan melihat apakah semua kata sandi yang seharusnya ada dapat ditemukan dengan baik dan tanpa kesalahan), maka pemfilteran duplikat telah berhasil dengan baik.
Server kami menggunakan memori 512G dan harddisk SSD dengan protokol NVMe, memakan waktu setengah bulan, berhasil menyelesaikannya dan menemukan seperangkat skrip pemrosesan yang efisien. Untuk kebutuhan tipe apa pun, Anda dapat menghubungi layanan pelanggan situs web untuk berkomunikasi, lubang yang kami temui saat pemfilteran duplikat, dan penulisan skrip pemrosesan otomatis!
Memfilter konten duplikat dalam file dictionary teks berukuran 2T adalah pekerjaan yang menantang namun sangat penting. Dengan memilih alat dan algoritma yang tepat, kami dapat secara efektif menghilangkan konten duplikat, meningkatkan kualitas file dictionary dan efisiensi penggunaannya, baik dalam skenario pencarian kata sandi menggunakan file dictionary ini maupun dalam aplikasi lain yang menggunakan file dictionary ini.