如何使用cryptocipher加密AES ECB模式?

时间:2013-10-22 04:47:52

标签: haskell encryption aes

我想使用http://hackage.haskell.org/package/cryptocipher-0.6.1/docs/Crypto-Cipher.html来加密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)

看起来我需要以一种聪明的方式使用makeKeycipherInit,但作为一名Haskell初学者,我正在努力弄清楚如何使用makeKey

我非常欣赏一个简短的样本块或指向正确的方向。

1 个答案:

答案 0 :(得分:3)

您应该查看ecbEncrypt的类型。 它需要cipher(在您的情况下为AES128)和ByteStringcipher可以生成cipherInit,这需要Key cipherKeymakeKey制作,其中ToSecureMemByteString将会这样做)并返回Either KeyError (Key cipher)。忽略错误,您只需在Right的{​​{1}}构造函数上进行模式匹配即可获得密钥。代码示例如下所示:

Either

我在这里直接指定了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 的类型,因为编译器不能自己知道你使用的是哪个密码。