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:
- Bepalen van de lengte van het codewoord
- Splitsen van de code in subcodes
- Frequentieanalyse op de subcodes
- Decoderen van de code
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:
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
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.- Klik hier om subcode 1 in te vullen.
- Klik hier om subcode 2 in te vullen.
- Klik hier om subcode 3 in te vullen.
- Klik hier om subcode 4 in te vullen.
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.
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):
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.
Bronvermelding
- Rudy Kousbroek, Het Mysterie van Patjitan. In: NRC Handelsblad, Cultureel Supplement, vrijdag 29 maart 2002.
- The Code Book, Simon Singh. Een uitstekend inleidend werk over allerlei codes, met leuke verhalen eromheen!
- Degene die de code van Patjitan voor het eerst heeft gekraakt, Jan Willem Stumpel, heeft zijn originele programma op internet gezet: www.jw-stumpel.nl.
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.