I Playfairchiffret krypteras bara texter som består av de 25 bokstäverna "ABCDEFGHIJKLMNOPRSTUVWXYZ". Så alla eventuella Q i texten avlägsnas innan den krypteras.
Jag har använt samma exempel som i Wikipedia-artikeln ovan.
För att kryptera (och även dekryptera) används en nyckel. I exemplet har man använt nyckeln "PLAYFAIR EXAMPLE". Man gör iordning nyckeln genom att ta bort alla mellanslag och upprepningar av bokstäver. Den iordninggjorda nyckeln blir alltså
PLAYFIREXMMan placerar sedan in de 25 tillåtna bokstäverna radvis i en 5 x 5-matris, och börjar med bokstäverna i nyckeln. Man fyller därefter på med resten av de tillåtna bokstäverna (i alfabetisk ordning). Matrisen blir alltså
P |
L |
A |
Y |
F |
I |
R |
E |
X |
M |
B |
C |
D |
G |
H |
J |
K |
N |
O |
S |
T |
U |
V |
W |
Z |
I exemplet har man använt klartexten "HIDE THE GOLD IN THE TREE STUMP", som man avlägsnat alla skiljetecken från. Kvar blir texten
HIDETHEGOLDINTHETREESTUMP
När man krypterar klartexten börjar man med att dela upp den i bokstavspar; "HIDETHEGOLDINTHETREESTUMP" blir "HI DE TH EG OL DI NT HE TR EE ST UM P". Par med två likadana bokstäver, EE i exemplet, slås isär genom att ett X adderas. EE blir EXE. Observera att detta påverkar uppdelningen av efterföljande par. Är det samma bokstav i rad, t.ex."RE ES", men i olika par så sätter man inte in något X. Så att texten lyder:
HI DE TH EG OL DI NT HE TR EX ES TU MPBestår texten (efter adderande av eventuella X) av ett udda antal bokstäver adderas ett X på slutet. Metoden klarar inte av fallet när man får ett XX-par (men risken är ju inte så stor att det kommer att inträffa). Så, meningen "Felix Xavier is the spy" går inte bra.
![]() |
Skriv ett
Matlabfunktion, playfair(text,
key, crypt),
som givet en nyckel (key) och klartext (text)
krypterar eller dekrypterar texten i text enligt
metoden ovan.
Om den tredje parametern (crypt) har värdet true
ska funktionen kryptera texten, om den har värdet false ska
texten dekrypteras.
Du kan utgå från att alla skiljetecken har avlägsnats
från både nyckel och klartext.
(Om du vill skriva en mer generell
funktion, där du tillåter skiljetecken och en blandning av versaler och
gemena i klartexten, kan du enkelt avlägsna allt som inte är
en bokstav (använd isletter) och konvertera till versaler (upper) eller gemena (lower)
). |