Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/jangko/nimAES
Advanced Encryption Standard, Rinjdael Algorithm written in Nim
https://github.com/jangko/nimAES
aes-256 aes-encryption encryption encryption-standard nim rinjdael-algorithm
Last synced: 3 months ago
JSON representation
Advanced Encryption Standard, Rinjdael Algorithm written in Nim
- Host: GitHub
- URL: https://github.com/jangko/nimAES
- Owner: jangko
- Created: 2015-08-28T14:43:53.000Z (about 9 years ago)
- Default Branch: master
- Last Pushed: 2022-08-09T07:10:04.000Z (about 2 years ago)
- Last Synced: 2024-05-18T15:40:45.492Z (6 months ago)
- Topics: aes-256, aes-encryption, encryption, encryption-standard, nim, rinjdael-algorithm
- Language: Nim
- Homepage:
- Size: 763 KB
- Stars: 51
- Watchers: 6
- Forks: 3
- Open Issues: 2
-
Metadata Files:
- Readme: readme.md
Awesome Lists containing this project
- awesome-nim - nimaes - Advanced Encryption Standard, Rinjdael Algorithm written in Nim. (Algorithms / Cryptography)
README
# **nimAES**
### Advanced Encryption Standard
#### Rinjdael Algorithm written in Niminitially this was part of [nimPDF](https://github.com/jangko/nimpdf) project, then I decided to release it separately
example:
```nimrod
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