Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Tipe data apa yang digunakan untuk bidang kata sandi hash dan berapa panjangnya?

Pembaruan:Cukup menggunakan fungsi hash tidak cukup kuat untuk menyimpan kata sandi. Anda harus membaca jawaban dari Gilles di utas ini untuk penjelasan lebih detail.

Untuk kata sandi, gunakan algoritma hash penguatan kunci seperti Bcrypt atau Argon2i. Misalnya, di PHP, gunakan fungsi password_hash() , yang menggunakan Bcrypt secara default.

$hash = password_hash("rasmuslerdorf", PASSWORD_DEFAULT);

Hasilnya adalah string 60 karakter yang mirip dengan berikut ini (tetapi angkanya akan bervariasi, karena menghasilkan garam yang unik).

$2y$10$.vGA1O9wmRjrwAVXD98HNOgsNpDczlqm3Jq7KnEd1rVAGv3Fykk1a

Gunakan tipe data SQL CHAR(60) untuk menyimpan pengkodean hash Bcrypt ini. Perhatikan bahwa fungsi ini tidak dikodekan sebagai string digit heksadesimal, jadi kami tidak dapat dengan mudah menghapusnya untuk disimpan dalam biner.

Fungsi hash lainnya masih memiliki kegunaan, tetapi tidak untuk menyimpan kata sandi, jadi saya akan menyimpan jawaban asli di bawah ini, yang ditulis pada tahun 2008.

Itu tergantung pada algoritma hashing yang Anda gunakan. Hashing selalu menghasilkan hasil dengan panjang yang sama, terlepas dari inputnya. Hal ini khas untuk mewakili hasil hash biner dalam teks, sebagai serangkaian digit heksadesimal. Atau Anda dapat menggunakan UNHEX() berfungsi untuk mengurangi string angka heksa menjadi setengahnya.

  • MD5 menghasilkan nilai hash 128-bit. Anda dapat menggunakan CHAR(32) atau BINARY(16)
  • SHA-1 menghasilkan nilai hash 160-bit. Anda dapat menggunakan CHAR(40) atau BINARY(20)
  • SHA-224 menghasilkan nilai hash 224-bit. Anda dapat menggunakan CHAR(56) atau BINARY(28)
  • SHA-256 menghasilkan nilai hash 256-bit. Anda dapat menggunakan CHAR(64) atau BINARY(32)
  • SHA-384 menghasilkan nilai hash 384-bit. Anda dapat menggunakan CHAR(96) atau BINARY(48)
  • SHA-512 menghasilkan nilai hash 512-bit. Anda dapat menggunakan CHAR(128) atau BINARY(64)
  • BCrypt menghasilkan nilai hash 448-bit yang bergantung pada implementasi. Anda mungkin membutuhkan CHAR(56), CHAR(60), CHAR(76), BINARY(56) atau BINARY(60)

Mulai tahun 2015, NIST merekomendasikan menggunakan SHA-256 atau lebih tinggi untuk setiap aplikasi fungsi hash yang membutuhkan interoperabilitas. Tetapi NIST tidak menyarankan penggunaan fungsi hash sederhana ini untuk menyimpan kata sandi dengan aman.

Algoritma hashing yang lebih rendah memiliki kegunaannya sendiri (seperti internal untuk aplikasi, bukan untuk pertukaran), tetapi mereka dikenal dapat dipecahkan .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara Mendapatkan Data Setiap Jam di MySQL

  2. Bekerja dengan mesin database MySQL

  3. Cara Mendapatkan Jumlah Hari dalam Sebulan di MySQL

  4. Cara Menambahkan Hari ke Tanggal di MySQL

  5. Pernyataan KASUS SQL