基本64哈希使URL更短

时间:2011-06-09 07:32:31

标签: php hash base64 hex

PHP的sha256输出一个64个字符长的字符串,因为它是16的字符串。 如何将其转换为base 64以减少其长度?

3 个答案:

答案 0 :(得分:9)

base64_encode(hash('sha256', 'hello', true));

答案 1 :(得分:2)

如果您已经拥有哈希并且无法控制它的生成,那么以下内容应该有效:

<?php

function hex2char($c) {
  return chr(hexdec($c));
}

function char2hex($c) {
  return str_pad(dechex(ord($c)),2,"0",STR_PAD_LEFT);
}


function base16to64($v) {
  return base64_encode(implode(array_map("hex2char", str_split($v,2))));

}

function base64to16($v) {
  return implode(array_map("char2hex",str_split(base64_decode($v),1)));

}


$input = hash('sha256', 'hello');

print($input . "\n");
print(base16to64($input) . "\n");
print(base64to16(base16to64($input)) . "\n");


?>

返回:

2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824
LPJNul+wow4m6DsqxbninhsWHlwfp0JecwQzYpOLmCQ=
2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824

将哈希的大小从64减少到44。

答案 2 :(得分:0)

要在基数之间进行转换,请使用http://php.net/manual/en/function.base-convert.php

按照上面的回答,这不符合此处的评论。