<?php
function bytesToBits(string $bytestring) : string {
$parts = '';
foreach (str_split($bytestring, 4) as $chunk) {
$parts .= str_pad(base_convert(unpack('H*', $chunk)[1], 16, 2), 32, '0', STR_PAD_LEFT);
}
return $parts;
}
function bitsToBytes(string $bitstring) : string {
$remain = $bitstring % 32;
if ($remain !== 0) {
$bitstring = str_pad($bitstring, $remain, '0', STR_PAD_LEFT);
}
$parts = '';
foreach (str_split($bitstring, 32) as $chunk) {
$parts .= pack('H*', str_pad(base_convert($chunk, 2, 16), 8, '0', STR_PAD_LEFT));
}
return $parts;
}
for ($i = 0; $i < 100; $i++) {
$bytestring_in = hash('sha512', uniqid('', true));
$bits = bytesToBits($bytestring_in);
$bytestring_out = bitsToBytes($bits);
if ($bytestring_in !== $bytestring_out) {
die('Error in functions.');
}
}
echo 'All ok!' . PHP_EOL;
preferences:
26.9 ms | 402 KiB | 5 Q