基地64哈希使URL更短
答
base64_encode(hash('sha256', 'hello', true));
答
如果你已经有了哈希,并且不控制它那一代,然后像下面应该工作:
<?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.
长度从64降低到44个字符 – hidarikani 2011-06-09 07:49:48
我不知道长度可以从哈希到哈希 – hidarikani 2011-06-09 07:54:43
不一样。由于sha-256的输出始终为32个字节,因此base64版本将始终为44个字节。 – 2011-06-09 08:03:39