Op het Trinity Church Cemetery in New York ligt James Leeson (1756–1794) begraven. Bovenaan zijn grafsteen staat een merkwaardige inscriptie, waarvan pas in 1889 bleek dat ze de tekst REMEMBER DEATH voorstelt in het rozenkruisersgeheimschrift.

James Leeson
Grafsteen van James Leeson (1756-1794) op het Trinity Church Cemetery in New York. Merk op dat het geheimschrift opgesteld is op basis van een variant van de sleutel die in deze opgave gebruikt wordt: de letters I en J werden op dezelfde manier geschreven in de koloniale spelling en dus werd de letter J weggelaten uit de sleutel. Alle letters die na de J komen, schuiven daardoor één positie naar voor in de roosters die gebruikt worden voor de versleuteling.

Het rozenkruisersgeheimschrift (ook wel vrijmetselaarsalfabet of maçonniek kwadraatschrift) is een monoalfabetische versleutelingsmethode waarbij de letters van de platte tekst gecodeerd worden door middel van eenvoudig te onthouden diagrammen. De methode — die ook onder de minder lovende naam varkenshokversleuteling (of pigpen) bekend staat — wordt in het algemeen toegeschreven aan de rozenkruisers. Dit geheim genootschap van wijsgerigen zou er in de 18e eeuw gebruik van gemaakt hebben om er haar geheimen mee te bewaren.

De oudst bekende variant is van Heinrich Cornelius Agrippa von Nettesheim die de methode uitlegt in zijn De occulta philosophia uit 1533. Dit werk werd in 1586 door Blaise de Vigenère hergebruikt in zijn tractaat aangaande geheimschrift. Er zijn vele varianten mogelijk, maar een geoefend cryptoanalist zal doorgaans geen enkele moeite hebben met de ontcijfering.

Opgave

De opgave bestaat erin een gegeven woord uit te schrijven, maar dan gecodeerd in het rozenkruisersgeheimschrift dat gebruik maakt van de volgende sleutel.

rozenkruisersgeheimschrift

Hierbij moet elke letter van het gegeven woord vertaald worden naar zijn symbolische voorstelling in het rozenkruisersgeheimschrift. Deze voorstelling bestaat uit $$3 \times 3$$ karakters. Het middelste karakter van de symbolische voorstelling geeft aan in welk van de drie roosters de letter voorkomt: een spatie stelt het linkse rooster voor, een punt (.) het middelste rooster, en een dubbelpunt (:) het rechtse rooster. Voorts moeten er lijnen links, rechts, boven en onder getrokken worden, overeenkomstig de positie van de letter in het rooster. Hieronder tonen we bij wijze van voorbeeld de symbolische voorstelling van de letters in het middelste rooster.

       |     | |     |       --+     +-+     +--     --+     +-+     +--
      .|     |.|     |.       .|     |.|     |.       .|     |.|     |. 
     --+     +-+     +--     --+     +-+     +--       |     | |     |  

      J       K       L       M       N       O       P       Q       R

Merk dus op dat fragmenten van een horizontale lijn voorgesteld worden door een koppelteken (-) en fragmenten van een verticale lijn door een verticale streep (|). Hoekpunten van de symbolische voorstelling waar twee lijnen samenkomen, worden voorgesteld door een plusteken (+). Gevraagd wordt:

Beide functies mogen geen onderscheid maken tussen hoofdletters en kleine letters.

Voorbeeld

>>> print(rozenkruisersletter('A'))
  |
  |
--+
>>> print(rozenkruisersletter('m'))
--+
 .|
--+
>>> print(rozenkruisersletter('U'))
|  
|: 
+--

>>> print(rozenkruisersgeheimschrift('python'))
--+ --+ | | +-+ +-- +-+
 .|  :| |:| | | |.  |.|
  |   | +-+ | | +-- +-+
>>> print(rozenkruisersgeheimschrift('Rosenkreutz'))
+-- +--   | +-+ +-+ | | +-- +-+ |   | | +-+
|.  |.   :| | | |.| |.| |.  | | |:  |:| |:|
|   +-- --+ +-+ +-+ +-+ |   +-+ +-- +-+ | |