Haskell 加密哈希 SHA256 replit 失败

标签 haskell hash sha256 replit

我正在尝试使用 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 文件。 (默认情况下,它不会显示在"file"选项卡中,但您可以单击右上角的垂直“...”,然后选择“显示隐藏文件”来查看它。)修改为看起来像这样:

{ 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)

关于Haskell 加密哈希 SHA256 replit 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71312095/

相关文章:

c++ - 使用链接删除哈希表中的值

java - 带有 jdbc 和散列密码的 shiro

c - C 中的哈希表不适用于字符串

php - MySQL/PHP - 数据库用户登录转换

Java SHA256 输出不同的散列到 PHP SHA256?

haskell - 如何计算字符串中字符串的出现次数(Haskell)

haskell - 将 Data.Time.UTCTime 与 ByteString 相互转换

java - 使用 OpenSSL 签名消息;无法使用 Android Java 进行验证

haskell - 如何编写通用量化函数的存在版本?

performance - Data.Vector.Unboxed.Mutable.MVector 的索引真的这么慢吗?