Exemplo n.º 1
0
Arquivo: sha256.php Projeto: ThQ/qd
function pad_message($str)
{
    $strlen = strlen($str);
    // NOTE: 8 is the size in bits of a byte (single char string)
    $l = $strlen * 8;
    $bitstr = "";
    for ($i = 0; $i < $strlen; $i++) {
        $tmp = substr($str, $i, 1);
        echo "char [" . $tmp . "] ord [" . ord($tmp) . "] decbin[" . decbin(ord($tmp)) . "]\n";
        $tmp = decbin(ord($tmp));
        $tmp = str_pad($tmp, 8, 0, STR_PAD_LEFT);
        $bitstr .= $tmp;
    }
    // Append 1 bit
    $bitstr .= "1";
    echo "bitstring:" . $bitstr . "\n";
    echo "int_pad_len:" . ($l + 1 + 64) % 512 . "\n";
    $padlen = 512 - ($l + 1 + 64) % 512;
    echo "pad_len:" . $padlen . "\n";
    $padding = str_pad($padding, $padlen, 0);
    $bitstr .= $padding;
    // Calculate 64 bit length
    $tmp = new BigInt($l);
    $bitstr .= str_pad($tmp->ToString(), 64, "0", STR_PAD_LEFT);
    $blocks = strlen($bitstr) / 512;
    $ret = array();
    for ($i = 0; $i < $blocks; $i++) {
        $ret[$i] = substr($bitstr, $i * 512, 512);
    }
    return $ret;
}