Educational AES implementation with 128-bit blocks and 128/192/256-bit keys, aligned with NIST FIPS 197.
| Property | Value |
|---|---|
| Category | Block Ciphers |
| Sub-category | Block Cipher |
| Security status | 🎓 Educational Only |
| Complexity | Intermediate |
| Inventor | Joan Daemen, Vincent Rijmen |
| Year | 1998 |
| Origin | 🇧🇪 Belgium |
| Source | algorithms/block/rijndael.js |
| Parameter | Supported values |
|---|---|
| Key sizes | 16 bytes (128 bits); 24 bytes (192 bits); 32 bytes (256 bits) |
| Block sizes | 16 bytes (128 bits) |
Status: 🎓 Educational Only
| Issue | Description | Mitigation |
|---|---|---|
| Side-channel leakage | Table-based AES leaks key-dependent timing information on shared hardware. | Use constant-time primitives or dedicated CPU instructions when side-channels matter. |
| Mode misuse | Reusing IVs or operating without authentication enables practical attacks despite strong core primitive. | Pair AES with authenticated modes (GCM, CCM) and fresh IVs for each message. |
9 vectors ship with this algorithm and run in the test suite. Byte values are hexadecimal.
Vector 1 — DarkCrypt Rijndael-128/256 vector 1/zero
| Field | Value |
|---|---|
key |
0000000000000000000000000000000000000000000000000000000000000000 |
input |
00000000000000000000000000000000 |
expected |
dc95c078a2408989ad48a21492842087 |
Vector 2 — DarkCrypt Rijndael-128/256 vector 2/incr
| Field | Value |
|---|---|
key |
000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f |
input |
000102030405060708090a0b0c0d0e0f |
expected |
5a6e045708fb7196f02e553d02c3a692 |
Vector 3 — DarkCrypt Rijndael-128/256 vector 3/incr2
| Field | Value |
|---|---|
key |
0102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f20 |
input |
101112131415161718191a1b1c1d1e1f |
expected |
08e0f42a19819e93d8788c5efe8c1b95 |
Vector 4 — DarkCrypt AES-256 vector 1/zero
| Field | Value |
|---|---|
key |
0000000000000000000000000000000000000000000000000000000000000000 |
input |
00000000000000000000000000000000 |
expected |
dc95c078a2408989ad48a21492842087 |
Vector 5 — DarkCrypt AES-256 vector 2/incr
| Field | Value |
|---|---|
key |
000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f |
input |
000102030405060708090a0b0c0d0e0f |
expected |
5a6e045708fb7196f02e553d02c3a692 |
Vector 6 — DarkCrypt AES-256 vector 3/incr2
| Field | Value |
|---|---|
key |
0102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f20 |
input |
101112131415161718191a1b1c1d1e1f |
expected |
08e0f42a19819e93d8788c5efe8c1b95 |
Vector 7 — FIPS 197 C.1 AES-128 ECB
| Field | Value |
|---|---|
key |
000102030405060708090a0b0c0d0e0f |
input |
00112233445566778899aabbccddeeff |
expected |
69c4e0d86a7b0430d8cdb78070b4c55a |
Vector 8 — NIST SP 800-38A F.2 AES-192 ECB #1
| Field | Value |
|---|---|
key |
8e73b0f7da0e6452c810f32b809079e562f8ead2522c6b7b |
input |
6bc1bee22e409f96e93d7e117393172a |
expected |
bd334f1d6e45f25ff712a214571fa5cc |
Vector 9 — NIST SP 800-38A F.2 AES-256 ECB #1
| Field | Value |
|---|---|
key |
603deb1015ca71be2b73aef0857d77811f352c073b6108d72d9810a30914dff4 |
input |
6bc1bee22e409f96e93d7e117393172a |
expected |
f3eed1bdb5d2a03c064b5a7e3db181f8 |