linkerは「人と人」「人と情報」「人と物」をつなぐデザインユニットです。

MTでMD5を扱う3つの方法

090820.gif


関連エントリーを書きました。(2009年11月19日)

del.icio.usのブックマーク数とPermalinkの話でも|linker journal|linker
/journal/2009/11/deliciouspermalink.php


みなさん、こんにちは、まーひーです
顔面麻痺も大分治ってきたような気がします。
再来週病院に行く頃にはもう普通に笑えるようになってそうな。。。

MD5ってご存じですか?
SBMのブックマーク数とかを取得する方法は色々あるかと思います。
del.icio.us内の個別ページはpermalinkをMD5に変換する必要があります。

MD5とは?

MD5とは

MD5(エムディーファイブ、Message Digest Algorithm 5)とは、与えられた入力に対して128ビットのハッシュ値を出力するハッシュ関数である。  

MD5 - Wikipedia
http://ja.wikipedia.org/wiki/MD5

ということらしいです。
del.icio.usのブックマーク数を取得したいと思うまで知りませんでした。
MTのEntryPermalinkとかをMD5ハッシュに変換するして出力できればいいんですが、それは標準では用意されていないようですね。

del.icio.us内のpermalinkはMD5ハッシュに変換されているようなので、のページは
http://del.icio.us/url/  
ではなくて
http://del.icio.us/url/<をMD5ハッシュに変換したもの>
になります。

http://delicious.com/url/5b6dba3acf54ea5c84b94cb3fd20c90b

がそのページのようです。

ではそのMD5ハッシュするにはどうするか?ということで

  • MTのプラグインを使う方法
  • PHPを使用する方法
  • JavaScriptを使用する方法

の3つの方法があります。

プラグインを使って

解決策の1つとしてプラグインが用意されているようです

Movable TypeのMD5フィルタ・プラグイン/楽
http://tech.bayashi.jp/archives/entry/movabletype-plugin/2008/002062.html  

で紹介されていますが、このプラグインを使うことでMD5ハッシュに変換が可能なようです。

PHPを使って

PHPにはMD5を扱う関数が用意されています。

PHPリファレンス(crypt()、md5()、sha1()、str_rot13())
http://www.php-ref.com/bapi/02_crypt.html

なので、

<?php
$url="<mt:EntryPermalink>";
echo 'href="http://del.icio.us/url/' . md5($url) ;
?>

こんなかんじにすればMD5化されたものが出来ます。

JavaScriptを使う方法

PHPが使える場合は、上記の方法が良いかと思いますが、PHPが使えない場合は他の方法が必要になります。
その1つとしてJavaScriptを使った方法を。

JavaScript++かも日記: 【暗号】md5.jsをPHPのmd5()と並べてみる
http://jsgt.org/mt/archives/01/000301.html

で紹介されていますmd5.jsを使ってみたいと思います。  

その場合はmd5.jsを読み込んでおいて

<script type="text/javascript">
url = MD5_hexhash('<mt:EntryPermalink />');
document.write("http://del.icio.us/url/"+url);
</script>

こんな感じでやってあげると良さそうです。

ということで、MD5を使わないといけないというまれな場合に遭遇したらこんなのもあったよな〜、と頭の片隅にでも。