Serpent (DarkCrypt)
Serpent variant from the DarkCrypt Total Commander plugin: standard 32-round S-box/linear-transform structure, but a non-overlapping flat key-schedule recurrence (unlike the overlapping circular-buffer recurrence used by common reference sources). Fixed 256-bit key, 128-bit block.
Properties
| Property |
Value |
| Category |
Block Ciphers |
| Sub-category |
Block Cipher |
| Security status |
🎓 Educational Only |
| Complexity |
Advanced |
| Inventor |
Ross Anderson, Eli Biham, Lars Knudsen (base Serpent); DarkCrypt variant by Alexander Myasnikov |
| Year |
2013 |
| Origin |
🇷🇺 Russia |
| Source |
algorithms/block/darkcrypt-serpent.js |
Parameters
| Parameter |
Supported values |
| Key sizes |
32 bytes (256 bits) |
| Block sizes |
16 bytes (128 bits) |
Security
Status: 🎓 Educational Only
Known vulnerabilities
| Issue |
Description |
Mitigation |
| Non-standard key schedule |
Uses a non-overlapping prekey generation scheme instead of the overlapping circular-buffer recurrence common in reference sources; unanalyzed and not recommended for real use. |
Use AES or another vetted cipher. |
Documentation
Test vectors
4 vectors ship with this algorithm and run in the test suite. Byte values are hexadecimal.
Vector 1 — NIST AES round-1 Serpent KAT ecb_vk.txt, KEYSIZE=256, I=1 (byte order reversed, the little-endian convention this build uses)
| Field |
Value |
key |
0000000000000000000000000000000000000000000000000000000000000080 |
input |
00000000000000000000000000000000 |
expected |
1908ef821ad2ebc0cb28bf66e796edab |
Vector 2 — DarkCrypt Serpent — zero key/plaintext
| Field |
Value |
key |
0000000000000000000000000000000000000000000000000000000000000000 |
input |
00000000000000000000000000000000 |
expected |
49672ba898d98df95019180445491089 |
Vector 3 — DarkCrypt Serpent — incrementing key/plaintext
| Field |
Value |
key |
000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f |
input |
000102030405060708090a0b0c0d0e0f |
expected |
de269ff833e432b85b2e88d2701ce75c |
Vector 4 — DarkCrypt Serpent — shifted incrementing key/plaintext
| Field |
Value |
key |
0102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f20 |
input |
101112131415161718191a1b1c1d1e1f |
expected |
b3691ac95c69060089c450f61fe384b7 |
← All algorithms