De Spartaanse scytale dateert van ca. 500 voor Christus, en is daarmee één van de oudste coderingsinstrumenten. Ze werd gebruikt door het Spartaanse leger om gecodeerde boodschappen te verzenden tussen bevelhebbers. De scytale bestond uit een houten stok van een bepaalde diameter en lengte, waarrond een lederen riem werd gewikkeld. De geheime boodschap werd van links naar rechts op de riem geschreven terwijl die rond de houten stok gewikkeld zat. Vervolgens werd de riem van de stok verwijderd en afzonderlijk van de stok naar een bevelhebber gestuurd. Deze gebruikte dan een houten stok met dezelfde afmetingen om de boodschap te decoderen. Wanneer enkel de riem werd onderschept, leek die alleen maar een onsamenhangende wirwar van letters te bevatten.

scytale
Scytale

Het volgende voorbeeld illustreert de werking van de scytale. Veronderstel dat we werken met een houten stok die ons toelaat om vier letters op de riem te schrijven vooraleer die een volgende keer rond de stok gewikkeld wordt. Als we de boodschap "Help me I am under attack" willen coderen, dan kunnen we de volledige tekst dus vatten in zeven kolommen (waarvan de laatste drie kolommen telkens een positie onbenut laten). Om de tekst te coderen, wordt deze van links naar rechts, en van boven naar onder op de lederen riem geschreven.

--------+---+---+---+---+---+---+---+---+----
        | H | e | l | p |   | m | e | * |
    +---|   | I |   | a | m |   | u | * |
    | * | n | d | e | r |   | a | t |---+
    | * | t | a | c | k | * | * | * |
----+---+---+---+---+---+---+---+---+--------

Nadat de lederen riem van de stok werd gewikkeld, leest de gecodeerde boodschap als "H nteIdal ecpark m m aeut". Daar valt inderdaad kop nog staart aan te krijgen. Om de boodschap de decoderen volstaat het om de lederen riem rond een stok met dezelfde afmetingen te wikkelen, en daarna de tekst terug van links naar rechts en van boven naar onder af te lezen. Het is echter een ander paar mouwen om dat coderen en decoderen aan een computer uitgelegd te krijgen.

Opgave

Voorbeeld

>>> codeer('Help me I am under attack', 4)
'H nteIdal ecpark m m aeut'

>>> decodeer('H nteIdal ecpark m m aeut', 4)
'Help me I am under attack'

>>> codeer('Always look on the bright side of life.', 7)
'A o t fllnb oewo rsf.aotii ykhgdls ehei'

>>> decodeer('A o t fllnb oewo rsf.aotii ykhgdls ehei', 7)
'Always look on the bright side of life.'