Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Haskell 如何使用密码进行AES ECB模式加密?_Haskell_Encryption_Aes - Fatal编程技术网

Haskell 如何使用密码进行AES ECB模式加密?

Haskell 如何使用密码进行AES ECB模式加密?,haskell,encryption,aes,Haskell,Encryption,Aes,我想用它来加密ByteString。下面是我遗憾的尝试: import Crypto.Cipher import Crypto.Cipher.AES (AES128) import Crypto.Cipher.Types import qualified Data.ByteString.Char8 as B key = B.pack "It a 128-bit key" main = do let ctext = ecbEncrypt key (B.pack "16 bytte

我想用它来加密ByteString。下面是我遗憾的尝试:

import Crypto.Cipher
import Crypto.Cipher.AES (AES128)
import Crypto.Cipher.Types
import qualified Data.ByteString.Char8 as B

key = B.pack "It a 128-bit key"

main = do 
     let ctext = ecbEncrypt key (B.pack "16 bytte ssecret") 
     print (B.unpack ctext)
看起来我需要以某种巧妙的方式使用它,但作为Haskell的初学者,我正在努力弄清楚如何使用
makeKey


我非常希望有一个简短的示例块或指向正确方向的点。

您应该查看
ecbenchrypt
的类型。 它需要一个
密码
AES128
,在您的情况下)和一个
字节测试环
cipher
可以由
cipherInit
生成,这需要
密钥密码
Key
s由
makeKey
生成,它以
ToSecureM
为例(一个
ByteString
就可以了),并返回
任意一个KeyError(Key cipher)
。忽略错误,您只需在
右侧
构造函数上进行模式匹配即可获得密钥。代码示例如下所示:

import Crypto.Cipher
import Crypto.Cipher.Types
import qualified Data.ByteString.Char8 as B

keyString = B.pack "It a 128-bit key"

Right key = makeKey keyString

aes128 :: AES128
aes128 = cipherInit key

ptext = B.pack "16 bytte ssecret"

ctext = ecbEncrypt aes128 ptext

main = putStrLn $ B.unpack ctext

我在这里直接指定了
aes128
的类型,因为编译器本身无法知道您使用的是哪种密码。

您应该查看
ecbEncrypt
的类型。 它需要一个
密码
AES128
,在您的情况下)和一个
字节测试环
cipher
可以由
cipherInit
生成,这需要
密钥密码
Key
s由
makeKey
生成,它以
ToSecureM
为例(一个
ByteString
就可以了),并返回
任意一个KeyError(Key cipher)
。忽略错误,您只需在
右侧
构造函数上进行模式匹配即可获得密钥。代码示例如下所示:

import Crypto.Cipher
import Crypto.Cipher.Types
import qualified Data.ByteString.Char8 as B

keyString = B.pack "It a 128-bit key"

Right key = makeKey keyString

aes128 :: AES128
aes128 = cipherInit key

ptext = B.pack "16 bytte ssecret"

ctext = ecbEncrypt aes128 ptext

main = putStrLn $ B.unpack ctext

我在这里直接指定了
aes128
的类型,因为编译器本身无法知道您使用的是哪种密码。

您应该查看
ecbEncrypt
的类型。 它需要一个
密码
AES128
,在您的情况下)和一个
字节测试环
cipher
可以由
cipherInit
生成,这需要
密钥密码
Key
s由
makeKey
生成,它以
ToSecureM
为例(一个
ByteString
就可以了),并返回
任意一个KeyError(Key cipher)
。忽略错误,您只需在
右侧
构造函数上进行模式匹配即可获得密钥。代码示例如下所示:

import Crypto.Cipher
import Crypto.Cipher.Types
import qualified Data.ByteString.Char8 as B

keyString = B.pack "It a 128-bit key"

Right key = makeKey keyString

aes128 :: AES128
aes128 = cipherInit key

ptext = B.pack "16 bytte ssecret"

ctext = ecbEncrypt aes128 ptext

main = putStrLn $ B.unpack ctext

我在这里直接指定了
aes128
的类型,因为编译器本身无法知道您使用的是哪种密码。

您应该查看
ecbEncrypt
的类型。 它需要一个
密码
AES128
,在您的情况下)和一个
字节测试环
cipher
可以由
cipherInit
生成,这需要
密钥密码
Key
s由
makeKey
生成,它以
ToSecureM
为例(一个
ByteString
就可以了),并返回
任意一个KeyError(Key cipher)
。忽略错误,您只需在
右侧
构造函数上进行模式匹配即可获得密钥。代码示例如下所示:

import Crypto.Cipher
import Crypto.Cipher.Types
import qualified Data.ByteString.Char8 as B

keyString = B.pack "It a 128-bit key"

Right key = makeKey keyString

aes128 :: AES128
aes128 = cipherInit key

ptext = B.pack "16 bytte ssecret"

ctext = ecbEncrypt aes128 ptext

main = putStrLn $ B.unpack ctext

我在这里直接指定了
aes128
的类型,因为编译器本身无法知道您使用的密码。

FYI ECB非常不安全FYI ECB非常不安全FYI ECB非常不安全FYI ECB非常不安全