在Haskell中计算文件的MD5摘要

Uli*_*ler 6 haskell md5

使用Haskell,如何在不使用外部工具的情况下计算文件的MD5摘要md5sum

注意:这个问题在我立即回答时故意不做任何努力.

Uli*_*ler 6

一种选择是使用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)


Ate*_*emu 3

现在你应该使用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