Haskell 如何使用密码进行AES ECB模式加密?
我想用它来加密ByteString。下面是我遗憾的尝试: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
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非常不安全