压缩哈希输出(从十六进制到“更高”表示)

时间:2017-12-30 08:57:52

标签: php math hash base-conversion

我有一个40个字符长的SHA1值,存储在InnoDB表的索引列中。为了缩短索引,我希望它能够“压缩”,而不会增加碰撞的风险。

<?php

$a = "875e5d6959da75400c837a79ecca23d79b40e7a5";

$b = base_convert($a, 16, 36);

echo $b; // ft92zicmcfks08088wk0oow44oso8gk

?>

这个解决方案好吗?为什么我不能转换为base64,它给了我以下警告:

Warning: base_convert(): Invalid "to base" (64) in...

1 个答案:

答案 0 :(得分:1)

因为根据 base_convert

的手册
  

... tobase 必须在2到36之间,包括。数字输入   基数高于10的数字将用。表示   字母a-z,含义10,b含义11和z含义35   字母的情况无关紧要,即数字被解释   不区分大小写。