나는 SHA256
암호 + 소금을 사용하려고하지만 VARCHAR
MySQL 데이터베이스를 설정할 때 얼마나 오래 갈지 모르겠습니다 . 좋은 길이는 무엇입니까?
답변
sha256의 이름은 256 비트입니다.
sha256은 16 진 표현을 리턴하므로 ASCII와 같이 8 개 대신 4 개의 문자로 각 문자를 인코딩하기에 충분하므로 256 비트는 64 개의 16 진수 문자를 나타내므로 길이가 항상 동일 하므로 varchar(64)
, 또는 을 필요 char(64)
로합니다. 전혀 변하지 않습니다.
그리고 데모 :
$hash = hash('sha256', 'hello, world!');
var_dump($hash);
당신에게 줄 것이다 :
$ php temp.php
string(64) "68e656b251e67e8358bef8483ab0d51c6619f3e7a1a9f0e75838d41ff368f728"
즉, 64 자의 문자열입니다.
답변
SHA256의 256 비트 인코딩 옵션 :
- Base64 :
CHAR(44)
문자 당 6 비트 = 패딩 문자 포함 - 16 진수 : 문자 당 4 비트 =
CHAR(64)
- 이진 : 바이트 당 8 비트 =
BINARY(32)
답변
BINARY (32)는 최적화 된 방식이므로 사용하는 것을 선호합니다!
(00에서 FF)까지 32 개의 16 진수를 넣을 수 있습니다.
따라서 이진 (32)!
답변
왜 VARCHAR로 만드시겠습니까? 다양하지 않습니다. 항상 64 자이며 온라인 SHA-256 계산기 중 하나를 실행하여 확인할 수 있습니다 .
답변
64 자로 고정되므로 사용하십시오. char(64)