Haskell 加密哈希 SHA256 重新拆分失败

Haskell Crypto Hash SHA256 replit failure

我正在尝试使用 replit.com 上的 Crypto.Hash 模块对文本进行哈希处理,我不知道如何解决此故障:找不到模块“Crypto.Hash”

代码:

import Crypto.Hash (hashWith, SHA256(..))
import Data.ByteString (ByteString)


main = do
  putStrLn "Hello"
  putStrLn "World"
  hashWith SHA256 ("hello" :: ByteString)

非常感谢您的帮助!!!

看起来replit.com是基于Nix的,它使用replit.nix配置文件来配置Nix环境,包括加载的GHC包。

因此,实现此功能的一种方法是编辑 replit.nix 文件。 (默认情况下,它不会显示在“文件”选项卡中,但您可以单击top-right角的垂直“...”和select“显示隐藏文件”查看它.) 修改它看起来像:

{ pkgs }: {
    deps = [
        (pkgs.haskellPackages.ghcWithPackages (pkgs: [
          pkgs.cryptonite
        ]))
        pkgs.haskell-language-server
    ];
}

现在,当您 运行 源代码时,它应该重新配置 Nix 环境并加载所需的 cryptonite 包。您可能还需要稍微修改您的代码,因为它使用 OverloadedStrings 扩展,而 hashWith 不是 IO 操作。我得到以下 Main.hs 工作:

{-# LANGUAGE OverloadedStrings #-}

import Crypto.Hash (hashWith, SHA256(..))
import Data.ByteString (ByteString)

main = do
  print $ hashWith SHA256 ("hello" :: ByteString)