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: about 1 month 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 (over 9 years ago)
- Default Branch: master
- Last Pushed: 2022-08-09T07:10:04.000Z (over 2 years ago)
- Last Synced: 2024-08-04T03:07:00.464Z (5 months ago)
- Topics: aes-256, aes-encryption, encryption, encryption-standard, nim, rinjdael-algorithm
- Language: Nim
- Homepage:
- Size: 763 KB
- Stars: 53
- Watchers: 6
- Forks: 4
- Open Issues: 2
-
Metadata Files:
- Readme: readme.md
Awesome Lists containing this project
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