Expand description
Simon family of lightweight block ciphers.
Implemented from “The SIMON and SPECK Families of Lightweight Block Ciphers” (Beaulieu et al., NSA, 2013), §3 and Appendix B. All 10 variants.
§Byte conventions
Block — two words (x ∥ y) laid out in little-endian word order with x first. x is the “left” word in the paper’s Feistel diagram — the operand of the nonlinear function f.
Key — m words (k₀ ∥ ℓ₀ ∥ … ∥ ℓ_{m−2}) in little-endian word order, k₀ first. This matches the C reference-implementation convention.
§Naming
Simon{B}_{K} denotes a B-bit block with a K-bit key, e.g. Simon64_128.
§Test vectors
Known-answer tests use Appendix B of the 2013 paper.