一种选择是使用pureMD5
包,例如,如果您想计算文件的哈希值foo.txt
:
import qualified Data.ByteString.Lazy as LB
import Data.Digest.Pure.MD5
main :: IO ()
main = do
fileContent <- LB.readFile "foo.txt"
let md5Digest = md5 fileContent
print md5Digest
Run Code Online (Sandbox Code Playgroud)
此代码打印与 相同的 MD5 总和md5sum foo.txt
。
如果你更喜欢单线,你可以使用这个(进口同上):
LB.readFile "foo.txt" >>= print . md5
Run Code Online (Sandbox Code Playgroud)
现在你应该使用cryptonite :
import System.Environment
import Crypto.Hash
import qualified Data.ByteString.Lazy as L
main = do
content <- L.readFile "foo.txt"
let digest = hashlazy content :: Digest MD5
putStrLn $ show digest
Run Code Online (Sandbox Code Playgroud)
(例如,您实际上可以替换MD5
为 cryptonite 支持的任何哈希算法。)SHA256