文字列の md5 ハッシュ値を計算する

pureMD5を使って文字列のMD5を算出します。

> :m + Data.Digest.Pure.MD5
> :t md5
md5 :: Data.ByteString.Lazy.Internal.ByteString -> MD5Digest

md5 関数は Data.ByteString.Lazy.Internal.ByteString から MD5Digest を作るので、
Haskellの文字列(List)から ByteString に変換する必要があります。

ByteString を作ってみます。

> Data.ByteString.Lazy.Char8.pack "hello"

Chunk "hello" Empty

> :t Data.ByteString.Lazy.Char8.pack "hello"
Data.ByteString.Lazy.Char8.pack "hello" :: ByteString

md5 関数で MD5Digest を作ります。

> :m + Data.ByteString.Lazy.Char8
> md5 $  pack "hello,world"    --=> 3cb95cfbe1035bce8c448fcaf80fe7d9

> :t md5 $  pack "hello,world" --=> md5 $  pack "hello,world" :: MD5Digest


> show $ md5 $ pack "hello,world" --=> "3cb95cfbe1035bce8c448fcaf80fe7d9"

Haskell の文字列からMD5を算出して文字列にする関数を定義します。

import Data.Digest.Pure.MD5
import Data.ByteString.Lazy.Char8

toMD5String :: String -> String
toMD5String = show.md5.pack
toMD5String "hello,world" --=> "3cb95cfbe1035bce8c448fcaf80fe7d9"