Codes kraken in Patjitan

De oplossing van de code van Patjitan

Inleiding

Op vrijdag 29 maart 2002 stond in het Cultureel Supplement van NRC Handelsblad een artikel getiteld "Het Mysterie van Patjitan". De auteur Rudy Kousbroek schrijft hierin over een grafsteen in een tempeltje aan de Zuidkust van Java. De inscriptie op deze grafsteen is gecodeerd. Generaties hebben vergeefs geprobeerd deze code te ontcijferen. Zo'n tien jaar geleden is het Willem Remmelink gelukt de code te kraken (hij schreef hierover in 1995 een artikel in het Franse tijdschrift Archipel). Kousbroek daagde in zijn artikel in het NRC de lezers uit de code te kraken. Hij verklapt hierbij wel dat het om een code van het type Vigenère gaat. Voor een poëtischer probleemstelling verwijs ik graag naar het artikel van Kousbroek (dat helaas niet op internet staat).

Ik gebruik op deze pagina programma's die hier staan. Ook ga ik ervan uit dat u deze pagina heeft gelezen, waarin ik uitleg hoe de verschillende codeersystemen werken en hoe ze kunnen worden gekraakt.

Het opschrift

Z*GJXFXFMF*DFWEF-
DXWBUJHRVWWGZEBG-
ZZ.ZBAGKBMAGXBZMQ-
HWGENFWB*VWOHWXK
YWOBML*DNNXOKWWBM
VXKSOTXKXWBMVXZD-
EUBQFXDDFMFDFALM
VXOCWGBDF
HJXFWGZEBGZZFVMJ
HLRNTKRSKLMZHBLG
XQHCNJXFXIHWYADWG
ENGZXBZMFMYUBSMB-
DDF?WBGWXIDOXODDW
FRERAZSKQNWMBJDX
FM.RTIHCNLNAMT*VX-
OYAXK?ZDLBQWXKKW
OBMALEHWKKZETXKK
****ZVSZTKRAGE**
***SWVRRRKFQPXZJM
**GZLDVXKVWKAYG*
**LORHDZBFGHFC.VT
**GF.FJRTICWGJNWB
**CXKVWZLUWKDNDZ-
LSZTKDEXKDFNTDWK
QDJNDUAGADF.MLSOX-
ADJSFDFL!

Het opschrift van de grafsteen in Patjitan is hiernaast afgebeeld. In het NRC stonden in deze code overigens twee typefouten, die ik er uit kon halen omdat ook de grafsteen was afgebeeld.

De sterretjes in dit opschrift staan voor letters die niet meer leesbaar zijn door beschadiging van de steen. Het is voor de Vigenère-code wel belangrijk dat we weten hoeveel letters er zijn weggevallen!

Ik ben ervan uitgegaan dat de interpunctie niet gecodeerd is, en dat hier ook het codewoord niet boven is geschreven. Daarom kan alle interpunctie verwijderd worden (dit doen de programma's op deze pagina automatisch).

De stappen die ik gevolgd heb zijn achtereenvolgens:

  1. Bepalen van de lengte van het codewoord
  2. Splitsen van de code in subcodes
  3. Frequentieanalyse op de subcodes
  4. Decoderen van de code
Hierna heb ik nog de ontbrekende letters in de originele tekst teruggezet, waardoor ik ook de verdwenen letters van de grafsteen weet.

Bepalen van de lengte van het codewoord

Voor het bepalen van de lengte van het codewoord heb ik gebruik gemaakt van een eigenschap van de Nederlandse taal. Als je twee Nederlandse teksten onder elkaar zet, blijkt het aantal overeenkomende letters op dezelfde positie ongeveer 6% te bedragen. Bij willekeurige letters is dit percentage slechts 3%. In het volgende voorbeeld is het aantal overeenkomende letters twee, inderdaad zo'n 6% (maar het wordt pas betrouwbaar bij langere teksten).

deschatligttwintigstappenvandeboom
oomdeschatligttwintigstappenvandeb
................x..........x......

Merk op dat dit aantal overeenkomsten niet verandert als we deze tekst volgens de Caesar-methode coderen: gelijke letters worden gelijke letters. We gaan deze grootheid nu voor een Vigenère-code bepalen, met een verschuiving zoals in het voorbeeld. Als we de tekst precies de lengte van het codewoord (of een veelvoud daarvan) naar rechts verplaatsen, dan zijn twee tekens die onder elkaar staan met dezelfde codeletter (Caesar) gecodeerd, en is de kans dat ze gelijk zijn dus 6%. Verplaatsen we de tekst niet een veelvoud van de lengte van het codewoord, dan zijn twee letters die onder elkaar staan met een verschillende codeletter gecodeerd en is de kans dat ze gelijk zijn dus maar zo'n 3%.

Ik heb voor het opschrift voor verschillende verschuivingen 1 t/m 12 bepaald hoeveel overeenkomsten er zijn. De uitkomst hiervan is:

Verschuiving 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Overeenkomsten

Naar aanleiding van deze resultaten dacht ik dat de lengte van het codewoord 8 of 12 moest zijn. Na hier echter lang over te hebben nagedacht (en ook nog meer verschuivingen te hebben bekeken) heb ik toch geconcludeerd dat de lengte van het codewoord 4 is (deze heldere ingeving kwam van mijn moeder).

Splitsen van de code in subcodes

Lengte van codewoord:
Code:

Subcode 1:
Subcode 4:
Subcode 2:
Subcode 3:

Frequentieanalyse op de subcodes

De volgende stap is de subcodes (die allemaal kunnen worden gezien als codes van het Caesar-type) te kraken door er een frequentieanalyse op los te laten. Dit moet voor elk van de subcodes apart.
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

De letter die boven de a staat is de letter die tijdens het coderen van de tekst als codeletter is gebruikt. De vier codeletters vormen het codewoord: "ZSTX".

Decoderen van de code

Klik op "Decodeer" om de tekst van de grafsteen te decoderen.

Codewoord:

Nabewerking

In principe zit nu het kraken van de code er op. We kunnen nu echter de sterretjes invullen in de originele tekst, en deze weer terug coderen (met codewoord "ZSTX"). Zo kunnen we er achter komen welke letters er op de grafsteen hebben gestaan op de plaats van de beschadigingen. Ik heb als originele tekst gereconstrueerd (de cursieve letters waren onleesbaar):

AAN MYNE INNIGE GELIEFDE VROUWE DJAMIJAH.
GEBOREN IN ACHTTIENHONDERDDRIEENZEVENTIG
OVERLEDEN DEN TWAALFDEN DECEMBER NEGENTIENHONDERDENEEN

O MYN DJAMIJAH, MYN ROOS VAN SARON
HOE MOET IK U MYNE LIEFDE EN HOOGACHTING BETUIGEN?
DE HEELE WERELD IS MY DAARTOE TE KLEIN.
ZAL IK U OOIT WEDERZIEN?
ALS ER EEN LEVEN IS HIERNAMAALS ZULT GY THANS IN HET PARADYS ZYN.
GY WAART ZOO GOED EN WERD ZOO MET VUIL GEGOOID.
DAAROM IK ZAL DEN MOEILYKEN WEG OVER GOLGOTHA NEMEN EN U WEER TERUGVINDEN.
TOT WEDERZIENS!

Om de verdwenen letters te reconstrueren kunt u het onderstaande programma gebruiken.

Codewoord:

Bronvermelding

Als u naar aanleiding van het bovenstaande vragen heeft (of als het niet werkt), mag u mij gerust e-mailen. Mijn e-mailadres is T.J.Dijkema@gmail.com.


Het aardigste van plezierige dingen is de herinnering.