Utilizzando Haskell, come posso calcolare il digest MD5 di un file senza utilizzare strumenti esterni come md5sum
?Compute MD5 digest di file in Haskell
Nota: Questa domanda non mostra intenzionalmente nessuno sforzo come ho risposto subito.
Utilizzando Haskell, come posso calcolare il digest MD5 di un file senza utilizzare strumenti esterni come md5sum
?Compute MD5 digest di file in Haskell
Nota: Questa domanda non mostra intenzionalmente nessuno sforzo come ho risposto subito.
Una possibilità è quella di utilizzare il pacchetto pureMD5
, per esempio se si vuole calcolare l'hash del file 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
Questo codice stampa la stessa somma MD5 come md5sum foo.txt
.
Se si preferisce un one-liner, è possibile utilizzare questo (le importazioni sono le stesse come sopra):
LB.readFile "foo.txt" >>= print . md5
Un'altra opzione sarebbe utilizzando cryptohash
che si basa su un'implementazione C e fornisce anche altri algoritmi di hash come SHA1:
import qualified Data.ByteString.Lazy as LB
import Crypto.Hash
md5 :: LB.ByteString -> Digest MD5
md5 = hashlazy
main :: IO()
main = do
fileContent <- LB.readFile "foo.txt"
let md5Digest = md5 fileContent
print $ digestToHexByteString md5Digest