Skip to main content

Module simon

Module simon 

Source
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.

Structs§

Simon32_64
Simon48_72
Simon48_96
Simon64_96
Simon64_128
Simon96_96
Simon96_144
Simon128_128
Simon128_192
Simon128_256