问题
I'm going to run SHA256
on a password + salt, but I don't know how long to make my VARCHAR
when setting up the MySQL database. What is a good length?
回答1:
A sha256 is 256 bits long -- as its name indicates.
If you are using an hexadecimal representation, each digit codes for 4 bits ; so you need 64 digits to represent 256 bits -- so, you need a varchar(64)
, or a char(64)
, as the length is always the same, not varying at all.
And the demo :
$hash = hash('sha256', 'hello, world!');
var_dump($hash);
Will give you :
$ php temp.php
string(64) "68e656b251e67e8358bef8483ab0d51c6619f3e7a1a9f0e75838d41ff368f728"
i.e. a string with 64 characters.
回答2:
Encoding options for SHA256's 256 bits:
- Base64: 6 bits per char =
CHAR(44)
including padding character - Hex: 4 bits per char =
CHAR(64)
- Binary: 8 bits per byte =
BINARY(32)
回答3:
I prefer to use BINARY(32) since it's the optimized way!
You can place in that 32 hex digits from (00 to FF).
Therefore BINARY(32)!
回答4:
Why would you make it VARCHAR? It doesn't vary. It's always 64 characters, which can be determined by running anything into one of the online SHA-256 calculators.
回答5:
It will be fixed 64 chars, so use char(64)
来源:https://stackoverflow.com/questions/2240973/how-long-is-the-sha256-hash