문자열이 md5 인 것으로 가정합니다. ('somestring'). 0..f 기호가 포함됩니다. 그래서 char (32)는 해시를 저장해도 괜찮지 만 21 바이트 ([log 38/log 236 + 1]) * 길이 (해시)를 넘길 수는 없다고 생각합니다. 기호 0..A를 가진 문자열로 0..f 기호로 문자열을 변환하는 모든 빠른 기능? (숫자와 라틴 문자 만 사용하기 때문에 21 바이트 이상 소요)?php : varchar ([log [38] 16) +1)에 0..9a..f가 포함 된 varchar (32)의 빠른 변환 ... 0..9A..z
0
A
답변
0
second parameter true로 설정합니다
string md5 (string $str [, bool $raw_output = false ])
2
더 나은 : 이진 해시 결과를. 이진은 인덱스를 사용하여 더 빠르고 더 빠르게 실행됩니다.
mysql을 사용하면 bin(16)
필드를 만들 수 있습니다. 쿼리는 다음과 같다 :
SELECT * FROM `table` WHERE `field` = UNHEX('md5 hash')
PHP를 사용에서이 기능 (bin으로 16 진수)
function convert($hexString)
{
$hexLenght = strlen($hexString);
// only hex numbers is allowed
if ($hexLenght % 2 != 0 || preg_match("/[^\da-fA-F]/",$hexString)) return FALSE;
unset($binString);
for ($x = 1; $x <= $hexLenght/2; $x++)
{
$binString .= chr(hexdec(substr($hexString,2 * $x - 2,2)));
}
return $binString;
}
당신은 또한 사용할 수 있습니다 http://php.net/manual/en/function.hex2bin.php
그래서 당신이 실제로 찾고 기본 16에서 기초 62 변환까지, 맞습니까? 또는 가능한 한 적은 스토리지를 사용하여 데이터베이스에 MD5 값을 저장하는 방법을 알고 싶습니까? – Gumbo