Код подтверждения рассчитывается по следующей формуле:
- Код проверки = целое число(SHA256(хеш)[-2:-1]) mod 10000
- Вычислить SHA256 из хеша, извлечь из результата 2 крайних правых байта, интерпретировать их как целое число без знака с обратным порядком байтов и для отображения возьмите последние 4 цифры в десятичной форме. Здесь всегда используется SHA256.
- Обратите внимание, что хэш — это реальное байтовое значение хеш-функции, а не форма Base64 или шестнадцатеричное представление.
Код: Выделить всё
function calculateVcode($hashString) {
$md = hash_init('sha256');
$hash = base64_decode($hashString);
hash_update($md, $hash);
$hash = hash_final($md, true);
$last = substr($hash, -2);
$code = bindec($last);
return substr(strval($code), -4);
}
$hashString = "Demo string for Authentication";
$md5Hash = md5($hashString);
$result = calculateVcode($md5Hash);`
Результат может быть таким:
Текст, используемый для сгенерировать хеш-строку
“Auðkenni APP Authentication”
Сгенерирована хеш-строка
n/kRNhXaZ2jFKv8KlQX7ydgedXUmVy8b2O4xNq2ZxHteG7wOvCa0Kg3rY1JLOrOBXYQm+z2FRVwIv47w8gUb5g==
Проверка код, рассчитанный по хешу
4141
Подробнее здесь: https://stackoverflow.com/questions/784 ... ash-in-php
Мобильная версия