Sử dụng Haskell, làm cách nào tôi có thể tính toán thông báo MD5 của tệp mà không sử dụng các công cụ bên ngoài như md5sum
?Tính toán tiêu chuẩn MD5 của tệp trong Haskell
Lưu ý: Câu hỏi này cố ý không có nỗ lực nào khi tôi trả lời ngay lập tức.
Sử dụng Haskell, làm cách nào tôi có thể tính toán thông báo MD5 của tệp mà không sử dụng các công cụ bên ngoài như md5sum
?Tính toán tiêu chuẩn MD5 của tệp trong Haskell
Lưu ý: Câu hỏi này cố ý không có nỗ lực nào khi tôi trả lời ngay lập tức.
Một lựa chọn là sử dụng gói pureMD5
, ví dụ nếu bạn muốn tính toán hash của 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
Mã này in ra các MD5 sum giống như md5sum foo.txt
.
Nếu bạn thích một lớp lót, bạn có thể sử dụng một trong này (nhập khẩu cũng tương tự như trên):
LB.readFile "foo.txt" >>= print . md5
tùy chọn khác sẽ được sử dụng cryptohash
mà là dựa trên việc thực hiện C và cũng cung cấp các thuật toán băm khác như 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