Het autosleutelcijfer (ook autoclavecijfer of autokeycijfer) is in de cryptografie één van de klassieke methoden om teksten te versleutelen. De versleuteling maakt gebruik van een polyalfabetische substitutie, waarbij letters worden vervangen aan de hand van verschillende alfabetische reeksen. Daarbij wordt een tabel gebruikt, waarin elk alfabet één letter verschoven is

  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
A 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
B 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 A
C C D E F G H I J K L M N O P Q R S T U V W X Y Z A B
D D E F G H I J K L M N O P Q R S T U V W X Y Z A B C
E E F G H I J K L M N O P Q R S T U V W X Y Z A B C D
F F G H I J K L M N O P Q R S T U V W X Y Z A B C D E
G G H I J K L M N O P Q R S T U V W X Y Z A B C D E F
H H I J K L M N O P Q R S T U V W X Y Z A B C D E F G
I I J K L M N O P Q R S T U V W X Y Z A B C D E F G H
J J K L M N O P Q R S T U V W X Y Z A B C D E F G H I
K K L M N O P Q R S T U V W X Y Z A B C D E F G H I J
L L M N O P Q R S T U V W X Y Z A B C D E F G H I J K
M M N O P Q R S T U V W X Y Z A B C D E F G H I J K L
N N O P Q R S T U V W X Y Z A B C D E F G H I J K L M
O O P Q R S T U V W X Y Z A B C D E F G H I J K L M N
P P Q R S T U V W X Y Z A B C D E F G H I J K L M N O
Q Q R S T U V W X Y Z A B C D E F G H I J K L M N O P
R R S T U V W X Y Z A B C D E F G H I J K L M N O P Q
S S T U V W X Y Z A B C D E F G H I J K L M N O P Q R
T T U V W X Y Z A B C D E F G H I J K L M N O P Q R S
U U V W X Y Z A B C D E F G H I J K L M N O P Q R S T
V V W X Y Z A B C D E F G H I J K L M N O P Q R S T U
W W X Y Z A B C D E F G H I J K L M N O P Q R S T U V
X X Y Z A B C D E F G H I J K L M N O P Q R S T U V W
Y Y Z A B C D E F G H I J K L M N O P Q R S T U V W X
Z Z 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

Om een tekst te versleuten verwijdert men eerst alle tekens uit de tekst die geen letters zijn. Daarna kiest men een geheim sleutelwoord dat enkel uit letters bestaat, bijvoorbeeld WATER. De tekst (waarin enkel de letters werden weerhouden) wordt achteraan het sleutelwoord toegevoegd, en daarna worden de tekst en het sleutelwoord onder elkaar geschreven.

   originele tekst:  MEETMEATTHEFOUNTAIN
      sleutelwoord:  WATERMEETMEATTHEFOU
                     -------------------
  gecodeerde tekst:  IEXXDQEXMTIFHNUXFWH

Vervolgens zoekt men elke letter uit de originele tekst op in het verticale alfabet en de letter op de corresponderende positie van het sleutelwoord in het horizontale alfabet. De gecodeerde letter vind men dan op de overeenkomstige positie in het rooster.

Om een gecodeerde tekst (die enkel bestaat uit letters) te kunnen ontcijferen dient men te beginnen met het oorspronkelijke sleutelwoord, dat beetje bij beetje aangevuld wordt met de reeds gedecodeerde tekst. Indien er één fout optreedt bij het decoderen, dan zal de rest van de gedecodeerde tekst ook fout zijn. Hierdoor is het extreem moeilijk om teksten die gecodeerd zijn aan de hand van een autosleutelcijfer te ontcijferen zonder dat men over de gebruikte sleutel beschikt.

Opgave

Voorbeeld

>>> substitutie('M', 'K')
'W'
>>> substitutie('e', 'I')
'M'
>>> substitutie('E', 'l')
'P'

>>> codeer('MEETMEATTHEFOUNTAIN', 'WATER')
'IEXXDQEXMTIFHNUXFWH'
>>> codeer('And now for something completely different!', 'SHRUBBERY')
'SUUHPXJFPSBPRHDNBXUCYTELBRRARUUQIKIYR'

>>> decodeer('IEXXDQEXMTIFHNUXFWH', 'WATER')
'MEETMEATTHEFOUNTAIN'
>>> decodeer('SUUHPXJFPSBPRHDNBXUCYTELBRRARUUQIKIYR', 'SHRUBBERY')
'ANDNOWFORSOMETHINGCOMPLETELYDIFFERENT'