fslasht (3370) の日記

2005 年 07 月 27 日
午後 09:26

PHPでmd5_base64() 関数みたいな処理したい

STATUS: 故障中

 某転記スクリプトで、perlで言うところの md5_base64() みたいな処理をしたいのですがPHPには無いので、md5() とbase64_encode() を組み合わせてみたのですが、どうも結果が違うようです。
 16進文字列に変換する前のmd5のバイナリが要るのだろうと思って、$strMd5Bin に作っているんだけどこれじゃだめかな。一応出来た文字列長は16byteになってるんだけど。

function MyMd5_base64( $strSrc )
{
        $strMd5 = md5( $strSrc );
        $strMd5Bin = "";

        for ( $i=0; $i<strlen($strMd5)/2; $i++ ) {
                $strMd5Bin .= sprintf("%c" , HexDec(substr($strMd5,$i*2,2)) );
        }
        return base64_encode( $strMd5Bin );
}

・追記 (21:34)
http://jp.php.net/md5 ここで、以下のようなコードを見つけた。

function md5_base64 ( $data )
{
   return preg_replace('/=+$/','',base64_encode(pack('H*',md5($data))));
}
 
でも、結果は似たような感じ(はてなのとは違う)。僕のコードは最後に「==」がついちゃうけど、これではソレが削除されている。

やりたいのは、以下のはてなダイアリー仕様変更に対応するためなんだけど、上記コードでCookie rkの値をエンコードしてもはてなが要求している(普通に日記編集操作するとrkmとしてフォームに入っている)値とは異なる値が出てくる。なんか解釈違うのかな。

http://d.hatena.ne.jp/hatenadiary/20050715/1121427904
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。

「毎々お世話になっております。仕様書を頂きたく。」「拝承」 -- ある会社の日常

処理中...