Saya akan SHA256
menggunakan kata sandi + garam, tapi saya tidak tahu berapa lama waktu saya VARCHAR
mengatur database MySQL. Berapa panjang yang bagus?
Saya akan SHA256
menggunakan kata sandi + garam, tapi saya tidak tahu berapa lama waktu saya VARCHAR
mengatur database MySQL. Berapa panjang yang bagus?
Jawaban:
Panjang sha256 adalah 256 bit - seperti namanya.
Karena sha256 mengembalikan representasi heksadesimal, 4 bit cukup untuk menyandikan setiap karakter (bukan 8, seperti untuk ASCII), jadi 256 bit akan mewakili 64 karakter hex, oleh karena itu Anda memerlukan varchar(64)
, atau bahkan a char(64)
, karena panjangnya selalu sama , tidak berbeda sama sekali.
Dan demo:
$hash = hash('sha256', 'hello, world!');
var_dump($hash);
Akan memberimu :
$ php temp.php
string(64) "68e656b251e67e8358bef8483ab0d51c6619f3e7a1a9f0e75838d41ff368f728"
yaitu string dengan 64 karakter.
varchar(65)
untuk memimpin !
... hanya mengatakan.
SELECT length(to_base64(unhex(sha2('say hello to my little friend',256))))
selalu ada berapa pun panjang string asli.
Opsi enkode untuk 256 bit SHA256:
CHAR(44)
termasuk karakter paddingCHAR(64)
BINARY(32)
=
bisa dilucuti dan ditambahkan kembali.
Saya lebih suka menggunakan BINARY (32) karena ini adalah cara yang dioptimalkan!
Anda dapat menempatkan 32 angka hex tersebut dari (00 hingga FF).
Karenanya BINARY (32)!
UPDATE...SET hash_column=UNHEX(sha256HexString)
. Lalu, saat mengambilnya, Anda SELECT HEX(hash_column) AS hash_column
.
Mengapa Anda membuatnya VARCHAR? Itu tidak bervariasi. Itu selalu 64 karakter, yang dapat ditentukan dengan memasukkan apa pun ke dalam salah satu kalkulator SHA-256 online .
Ini akan diperbaiki 64 karakter, jadi gunakan char(64)
CHARACTER SET ascii
.
SHA-*
kata sandi hash, HARAP baca ini dulu .