Pembuat Scrypt
Turunkan kunci scrypt dari kata sandi dengan salt acak atau khusus. Pilih eksponen biaya hingga 15 (N hingga 32768), ukuran blok r hingga 8, paralelisme p hingga 4, dan panjang kunci 16 hingga 64 byte. Alat ini mengikuti RFC 7914 dan mengembalikan kunci, salt yang digunakan, serta parameternya dalam format hex atau Base64, siap dibandingkan dengan Node.js crypto.scrypt, Python hashlib, atau libsodium. Kata sandi tidak ditampilkan kembali.
Pertanyaan yang sering diajukan
Apa itu scrypt?
Scrypt adalah fungsi derivasi kunci yang membutuhkan banyak memori, dibuat oleh Colin Percival dan distandardisasi dalam RFC 7914. Fungsi ini menurunkan kunci dari kata sandi dan salt, sekaligus memaksa setiap percobaan menggunakan blok memori yang besar. Scrypt digunakan untuk penyimpanan kata sandi, enkripsi disk, dan beberapa mata uang kripto.
Apa arti N, r, dan p?
N adalah biaya CPU dan memori dan harus berupa pangkat dua, r adalah ukuran blok, dan p adalah faktor paralelisasi. Penggunaan memori sekitar 128 dikali N dikali r byte, jadi N = 16384 dengan r = 8 membutuhkan 16 MiB. Di sini N maksimal 32768, r maksimal 8, dan p maksimal 4.
Apa parameter defaultnya?
Nilai defaultnya adalah N = 16384 (eksponen biaya 14), r = 8, p = 1, dan kunci 32 byte, yaitu pengaturan interaktif yang direkomendasikan dalam makalah scrypt. Tingkatkan N untuk perlindungan yang lebih kuat, sesuai kemampuan sistem Anda.
Bagaimana salt dipilih?
Jika kolom salt kosong, alat ini membuat 16 byte acak dan menampilkannya pada hasil. Jika Anda memasukkan salt, byte UTF-8-nya akan digunakan sehingga Anda dapat membuat ulang kunci dari sistem lain. Jangan pernah menggunakan ulang satu salt untuk kata sandi yang berbeda.
Bisakah saya mereproduksi vektor pengujian RFC 7914?
Ya. Kata sandi pleaseletmein dengan salt SodiumChloride, eksponen biaya 14, r = 8, p = 1, dan kunci 64 byte menghasilkan 7023bdcb3afd7348461c06cd81fd38ebfda8fbba904f8e3ea9b543f6545da1f2d5432955613f0fcf62d49705242a9af9e61e85dc0d651e40dfcf017b45575887, vektor ketiga dalam RFC tersebut.
Mengapa parameternya dibatasi?
Scrypt mengalokasikan memori sungguhan dan berjalan di server bersama. Membatasi N hingga 32768, r hingga 8, dan p hingga 4 menjaga penggunaan memori setiap derivasi di bawah sekitar 32 MiB dan waktu pengerjaannya sekitar satu atau dua detik.
Bagaimana cara menyimpan hash kata sandi scrypt?
Simpan kunci, salt, serta N, r, dan p secara bersamaan karena semuanya diperlukan untuk memeriksa kata sandi nanti. Pustaka seperti Node.js crypto.scrypt menyerahkan format penyimpanan kepada Anda, sedangkan pustaka lain menggunakan format stringnya sendiri.
Apakah kata sandi saya disertakan dalam hasil?
Tidak. Respons berisi kunci, salt, dan parameter, tetapi tidak pernah kata sandi. Tidak ada yang dicatat atau disimpan.
Sebaiknya saya menggunakan scrypt atau Argon2?
Keduanya tahan terhadap serangan yang memanfaatkan memori dan cocok untuk kata sandi. Argon2id adalah rekomendasi yang lebih baru dan lebih mudah disesuaikan, sedangkan scrypt didukung secara luas di pustaka standar seperti Node.js dan Python.
Apa yang diubah oleh opsi hex dan Base64?
Opsi tersebut mengubah cara kunci dan salt ditulis dalam hasil. Byte-nya tetap sama, jadi pilih format yang dapat dibaca oleh kode Anda.