gpt4 book ai didi

haskell - 如何在haskell中正确生成随机字节串

转载 作者:行者123 更新时间:2023-12-04 03:11:49 24 4
gpt4 key购买 nike

我是 haskell 的新手,想编写一个函数来生成随机字节字符串。
从我的角度来看 Crypto.Random (来自 crypto-api v0.3.1 )似乎是最好的模块,但我无法弄清楚。

我想做类似以下的事情:

let size = 2048
let bytestring = randomByteString size

最佳答案

  • 您可以使用 CryptoRandomGen 的任何实例, 如 Ganesh 所示
  • 您可以使用 System.Random对于不安全的随机值(见 jamshidh 的回答)
  • 你可以得到平台底层生成器提供的熵(这就是 SystemRandom 在幕后所做的)。

  • 选项 3:从您的平台获取熵

    最后一种技术是最简单的,但在没有 RDRAND 指令的系统上具有更高的开销——它必须打开文件、读取和关闭文件。这是使用 entropy包裹:
    import System.Entropy

    someFunc = do
    randBytes <- getEntropy 2048
    ....

    选项 1:使用 CryptoRandomGen 实例

    如果你想要一个纯生成器,但播种的是高熵种子,那么你可以使用 CryptoRandomGen 中的任何一个。来自 DRBG 的实例化值包裹:
    import Crypto.Random.DRBG

    然后只是 Ganesh 的示例(在此处转载)在 newGenIO 上具有不同的签名:
    do
    g <- newGenIO :: IO CtrDRBG
    case genBytes size g of
    Left err -> error $ show err
    Right (result, g2) -> return result

    对于好奇,我 reviewed a few of the available secure RNGs on my blog - 除了 RDRAND 之外,它们中的大多数不符合任何标准(这不好,它们似乎完全是程序员的即兴发明) , HashDRBG , 和 HmacDRBG .

    关于haskell - 如何在haskell中正确生成随机字节串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20889729/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com