У меня есть значение SHA1 длиной 40 символов, которое хранится в индексированном столбце в таблице InnoDB. Чтобы сократить индекс, я хочу, чтобы он был «сжат», не увеличивая риск столкновения.
<?php
$a = "875e5d6959da75400c837a79ecca23d79b40e7a5";
$b = base_convert($a, 16, 36);
echo $b; // ft92zicmcfks08088wk0oow44oso8gk
?>
Это решение хорошо? И почему я не могу конвертировать в base64, это выдает мне следующее предупреждение:
Warning: base_convert(): Invalid "to base" (64) in...
Потому что согласно руководству base_convert
…
tobase
должно быть от 2 до 36 включительно. Цифры в
числа с основанием выше 10 будут представлены с
буквы a-z со значением 10, b означающие 11 и z означающие 35.
регистр букв не имеет значения, то есть число интерпретируется
регистронезависимо.
Других решений пока нет …