Home

Awesome

nimAES

Advanced Encryption Standard

Rinjdael Algorithm written in Nim

initially this was part of nimPDF project, then I decided to release it separately

example:

var aes = initAES()
let input = "0123456789ABCDEF"
let key = "FEDCBA9876543210"
if aes.setEncodeKey(key):
  let encrypted = aes.encryptECB(input)
  if aes.setDecodeKey(key):
    let decrypted = aes.decryptECB(encrypted)
    assert decrypted == input

both setEncodeKey and setDecodeKey accept 128, 192, and 256 bits key length

supported mode:

MODECodec PairIV 16 bytesIOEncKeyDecKey
ECByesno1 blockyesyes
CBCyesyesn x blocksyesyes
CFB128yesyesn x blocksyesno
CFB8yesyesn x blocksyesno
CTRnoyesstreamyesno
OFBnoyesn x blocksyesno

output length always same with input length

1 block equal to 16 bytes

CTR mode accept arbitrary input length

IV = Initialization Vector

Codec Pair: