No description
Find a file
2022-08-09 13:26:44 +07:00
.github/workflows fix github action script 2022-08-09 13:26:44 +07:00
docs folder reorgs 2020-04-17 09:55:59 +07:00
tests clean up tests 2022-08-09 09:57:24 +07:00
.appveyor.yml add githuc action script 2021-01-23 15:56:15 +07:00
.gitattributes add gitignore 2015-08-28 21:47:33 +07:00
.gitignore update gitignore 2016-01-30 19:59:20 +07:00
.travis.yml add githuc action script 2021-01-23 15:56:15 +07:00
nimAES.nim fix 32 bit crash 2020-04-17 11:47:18 +07:00
nimAES.nimble add githuc action script 2021-01-23 15:56:15 +07:00
readme.md update readme.md 2017-05-10 21:44:12 +07:00

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:

MODE Codec Pair IV 16 bytes IO EncKey DecKey
ECB yes no 1 block yes yes
CBC yes yes n x blocks yes yes
CFB128 yes yes n x blocks yes no
CFB8 yes yes n x blocks yes no
CTR no yes stream yes no
OFB no yes n x blocks yes no

output length always same with input length

1 block equal to 16 bytes

CTR mode accept arbitrary input length

IV = Initialization Vector

Codec Pair:

  • yes: have encrypt and decrypt
  • no: only one function both for encrypt and decrypt