17.4 Classical Ciphers

Module: sage.crypto.classical_cipher

Classical Ciphers.

Class: HillCipher

class HillCipher
Hill cipher class
HillCipher( self, parent, key)

Create a Hill cipher.

Input: parent and key

       sage: S = AlphabeticStrings()
       sage: E = HillCryptosystem(S,3)
sage: E
       Hill cryptosystem on Free alphabetic string monoid on A-Z of block
length 3
sage: M = E.key_space()
       sage: A = M([[1,0,1],[0,1,1],[2,2,3]])
sage: A
[1 0 1]
[0 1 1]
[2 2 3]
sage: e = E(A)
       sage: e
[1 0 1]
[0 1 1]
[2 2 3]
       sage: e(S("LAMAISONBLANCHE"))
JYVKSKQPELAYKPV

TESTS:

sage: S = AlphabeticStrings()
sage: E = HillCryptosystem(S,3)
sage: E == loads(dumps(E))
True

Functions: inverse

Special Functions: __call__,$ \,$ __eq__,$ \,$ __init__

Class: SubstitutionCipher

class SubstitutionCipher
Substitution cipher class
SubstitutionCipher( self, parent, key)

Create a substitution cipher.

Input: parent and key

       sage: S = AlphabeticStrings()
       sage: E = SubstitutionCryptosystem(S)
sage: E
       Substitution cryptosystem on Free alphabetic string monoid on A-Z
       sage: K = S([ 25-i for i in range(26) ])
sage: K
ZYXWVUTSRQPONMLKJIHGFEDCBA
       sage: e = E(K)
sage: m = S("THECATINTHEHAT")
sage: e(m)
GSVXZGRMGSVSZG

TESTS:

sage: S = AlphabeticStrings()
sage: E = SubstitutionCryptosystem(S)
sage: E == loads(dumps(E))
True

Functions: inverse

Special Functions: __call__,$ \,$ __eq__,$ \,$ __init__

Class: TranspositionCipher

class TranspositionCipher
Transition cipher class
TranspositionCipher( self, parent, key)

Create a transposition cipher.

Input: parent and key

       sage: S = AlphabeticStrings()
       sage: E = TranspositionCryptosystem(S,14)
sage: E
       Transposition cryptosystem on Free alphabetic string monoid on A-Z
of block length 14
       sage: K = [ 14-i for i in range(14) ]
sage: K
[14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
       sage: e = E(K)
sage: m = S("THECATINTHEHAT")
sage: e(m)
TAHEHTNITACEHT

sage: S = AlphabeticStrings()
       sage: E = TranspositionCryptosystem(S,15);
sage: m = S("THECATANDTHEHAT")
sage: G = E.key_space()
sage: G
Symmetric group of order 15! as a permutation group
sage: g = G([ 3, 2, 1, 6, 5, 4, 9, 8, 7, 12, 11, 10, 15, 14, 13 ]) 
sage: e = E(g)
sage: e(m)
EHTTACDNAEHTTAH

TESTS:

sage: S = AlphabeticStrings()
sage: E = TranspositionCryptosystem(S,14)
sage: E == loads(dumps(E))
True

Functions: inverse

Special Functions: __call__,$ \,$ __init__

Class: VigenereCipher

class VigenereCipher
Vigenere cipher class
VigenereCipher( self, parent, key)

Create a Vigenere cipher.

Input: parent and key

sage: S = AlphabeticStrings()
sage: E = VigenereCryptosystem(S,11)
sage: K = S("SHAKESPEARE")
sage: e = E(K)
sage: m = S("THECATINTHEHAT")
sage: e(m)
LOEMELXRTYIZHT

TESTS:

sage: S = AlphabeticStrings()
sage: E = VigenereCryptosystem(S,11)
sage: E == loads(dumps(E))
True

Functions: inverse

Special Functions: __call__,$ \,$ __init__

See About this document... for information on suggesting changes.