<?php
$secret = 'MB4CMFCCGLNNAC4WR5AOGFVJZR4IIAD7';
function binaryChunk($binaryString, $bits) {
$binaryString = chunk_split($binaryString, $bits, ' ');
if (substr($binaryString, (strlen($binaryString)) - 1) == ' ') {
$binaryString = substr($binaryString, 0, strlen($binaryString)-1);
}
return explode(' ', $binaryString);
}
function base32decode($base32String){
$alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=';
// Only work in upper cases
$base32String = strtoupper($base32String);
// Remove anything that is not base32 alphabet
$pattern = '/[^A-Z2-7]/';
$base32String = preg_replace($pattern, '', $base32String);
if (strlen($base32String) == 0) {
// Gives an empty string
return '';
}
$base32Array = str_split($base32String);
$string = '';
foreach ($base32Array as $str) {
$char = strpos($alphabet, $str);
// Ignore the padding character
if ($char !== 32) {
$string .= sprintf('%05b', $char);
}
}
while (strlen($string) %8 !== 0) {
$string = substr($string, 0, strlen($string)-1);
}
$binaryArray = binaryChunk($string, 8);
$realString = '';
foreach ($binaryArray as $bin) {
// Pad each value to 8 bits
$bin = str_pad($bin, 8, 0, STR_PAD_RIGHT);
// Convert binary strings to ASCII
$realString .= chr(bindec($bin));
}
return $realString;
}
$bin = base32decode($secret);
$rnd = bin2hex($bin);
echo $rnd;
preferences:
57.3 ms | 402 KiB | 5 Q