cipher-aes128

Based on cipher-aes, but using a crypto-api interface and providing resulting IVs for each mode


Keywords
cryptography, library, Propose Tags, , Index, Quick Jump, Crypto.Cipher.AES128, Crypto.Cipher.AES128.Internal, More info, cipher-aes128-0.7.0.6.tar.gz, browse, Package description, Package maintainers, ThomasDuBuisson, edit package information , 0.7.0.4, 0.7.0.5
License
BSD-3-Clause
Install
cabal install cipher-aes128-0.7.0.6

Documentation

TravisCI

AES and various modes

This package, available on hackage, implements AES and various modes of operation. Despite the name, it provides AES-192 and 256 as well.

While it original started as a fork of the cipher-aes package to test a performance improvement, this package continues to be maintained due to my preference for the API (for example, also this) and the idea that faster C code will eventually be adopted.

Use

Most users will want the crypto-api interface to generate keys and encrypt/decrypt data:

{-# LANGUAGE OverloadedStrings #-}
import Data.ByteString
import Crypto.Cipher.AES128 (AESKey128)
import Crypto.Classes (buildKeyIO, ctr, unCtr, zeroIV)

main =
 do k <- buildKeyIO :: IO AESKey128
    let myMessage            = "Some message or another"
        (ciphertext,_nextIV) = ctr k zeroIV myMessage
        (myMessage',_nextIV) = unCtr k zeroIV ciphertext
    print (unpack myMessage)
    print (unpack ciphertext)
    print $ myMessage == myMessage'

Unless you need GCM in which case, as of writing, you'll need to use makeGCMCtx, encryptGCM and decryptGCM.