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