認証コード生成 (HMAC) 関数


//認証コード生成 (HMAC) 関数

//OAuthにおける署名を作成する には、この「HMAC-SHA1」という製法が多く用いられている。

function to_hmacsha1($key,$data) {
    $blocksize=64;
    $hashfunc='sha1';
    if (strlen($key)>$blocksize)
        $key=pack('H*', $hashfunc($key));
    $key=str_pad($key,$blocksize,chr(0x00));
    $ipad=str_repeat(chr(0x36),$blocksize);
    $opad=str_repeat(chr(0x5c),$blocksize);
    $hmac = pack(
                'H*',$hashfunc(
                    ($key^$opad).pack(
                        'H*',$hashfunc(
                            ($key^$ipad).$data
                        )
                    )
                )
            );
    return $hmac;
}

プログラムの解説

strlen

文字列の長さを得る

str_pad

文字列を固定長の他の文字列で埋める

str_repeat

文字列を反復する