[mysql] SHA256 해시는 얼마나 걸립니까?

나는 SHA256암호 + 소금을 사용하려고하지만 VARCHARMySQL 데이터베이스를 설정할 때 얼마나 오래 갈지 모르겠습니다 . 좋은 길이는 무엇입니까?



답변

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 비트 인코딩 옵션 :

  1. Base64 : CHAR(44)문자 당 6 비트 = 패딩 문자 포함
  2. 16 진수 : 문자 당 4 비트 = CHAR(64)
  3. 이진 : 바이트 당 8 비트 = BINARY(32)

답변

BINARY (32)는 최적화 된 방식이므로 사용하는 것을 선호합니다!

(00에서 FF)까지 32 개의 16 진수를 넣을 수 있습니다.

따라서 이진 (32)!


답변

왜 VARCHAR로 만드시겠습니까? 다양하지 않습니다. 항상 64 자이며 온라인 SHA-256 계산기 중 하나를 실행하여 확인할 수 있습니다 .


답변

64 자로 고정되므로 사용하십시오. char(64)


답변