gpt4 book ai didi

string - 在 Haskell 中对字符串进行异或

转载 作者:行者123 更新时间:2023-12-02 06:24:03 25 4
gpt4 key购买 nike

我想编写一个使用异或密码加密文本的程序。这就是我现在所拥有的:

-- XORres 2 strings
stringXor :: String -> String -> String
stringXor s t = map chr $ zipWith xor (map ord s) (map ord t)

-- encryption and decryption
encDec :: String -> String -> String
encDec text key = stringXor (take (length text) (cycle key)) text

但是 encDec "this is a test""k" 的输出是

  "\US\ETX\STX\CANK\STX\CANK\nK\US\SO\CAN\US"

虽然我期待类似 1f0302184b02184b0a4b1f0e181f4b 的内容。

这里可能出现什么问题?我搜索过类似的问题,但没有太大帮助。

最佳答案

stringXor s t = map chr $ zipWith xor (map ord s) (map ord t)

chr 映射到 XOR 的结果。这会产生每个 ASCII 值的字符。要将结果显示为十六进制,您需要找到一个不同的函数来替换 chr 或自己编写一个函数。

旁注:在密码学中,通常使用 Base64 表示法来编码二进制数据而不是十六进制,因为它使用更少的字符(因此更少的内存或网络带宽)来表示相同的二进制序列.

关于string - 在 Haskell 中对字符串进行异或,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59361341/

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