Intereting Posts
Число переменных не соответствует количеству параметров – Да, они делают Как отображать php-код и html-теги в виде текста на веб-странице Как Zend \ Db в ZF2 контролирует транзакции? Пытаться анализировать только изображения из RSS-ленты Динамически добавлять поля ввода, но поля генерируются внешними php-функциями Диапазон дат PHP, массив Как найти память, используемую объектом в PHP? (размер) Ошибка сертификата SSL: невозможно получить сертификат локального эмитента при аутентификации с помощью Podio Доктрина 2: странное поведение при вставке пакетной обработки объектов, которые ссылаются на другие объекты Тест PDO, если он подключен Goutte не загрузит страницу ASP SSL Не удалось открыть приложение / консоль ввода файлов Silverstripe DataObjects as Pages Part 2 tutorial – проблема с боковой панелью как я могу сделать какие-то цифры выше общих дней месяца, как новые числа дневного месяца? Сертификат peer не может быть аутентифицирован с помощью известных сертификатов CA с использованием расширения PHP OAuth

PHP – генерировать 8-символьный хеш из целого числа

Есть ли способ принять любое число, скажем, от 1 до 40000 и создать хэш-символ с 8 символами?

Я думал об использовании base_convert но не мог понять, как заставить его быть 8-символьным хэшем.

Любая помощь будет оценена!

Почему бы вам просто не запустить md5 и взять первые 8 символов?

Поскольку вы хотите хеш, неважно, отбрасываются ли части, а скорее, что один и тот же вход будет выдавать один и тот же хеш.

 $hash = substr(md5($num), 0, 8); 
 >>> math.exp(math.log(40000)/8) 3.7606030930863934 

Поэтому вам нужно 4 символа-цифры для создания 8-символьного хеша с 40000:

 sprintf("%08s", base_convert($n, 10, 4)) 

Для php:

 $seed = 'JvKnrQWPsThuJteNQAuH'; $hash = sha1(uniqid($seed . mt_rand(), true)); # To get a shorter version of the hash, just use substr $hash = substr($hash, 0, 10); 

http://snipplr.com/view.php?codeview&id=20236

Есть много способов …

один пример

 $x = ? $s = ''; for ($i=0;$i<8;++$i) { $s .= chr( $x%26 + ord('a') ); $x /= 26; } 
 $hash = substr(hash("sha256",$num), 0, 8); 

Итак, вы хотите преобразовать 6-значное число в 8-разрядную строку воспроизводимо?

 sprintf("%08d", $number); 

Конечно, хэш не обратим – но без соли / IV это может быть немного легко взломать. Лучшее решение может быть:

 substr(sha1($number . $some_secret),0,8); 

C.