\(\(alphabet = {" ", "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", ",", ".", "'", ":", "?"};\)\)

code[mot_] := 
      Map[Position[alphabet, #][[1, 1]] - 1 &, 
        Characters[mot]]

texteclair = "le jour de ses onze ans, harry potter, un orphelin \
eleve par un oncle et une tante qui le detestent, voit son existence \
bouleversee.";

codetxclair = code[texteclair]

decode[liste_] := 
      StringJoin[
        Table[alphabet[[liste[[i]] + 1]], {i, 1, 
            Length[liste]}]]

decode[codetxclair]

cesar[n_] := Mod[n + 3, 32]

codetxchiffre = cesar[codetxclair]

txchiffre = decode[codetxchiffre]

Map[Count[codetxchiffre, #] &, Table[i, {i, 0, 32}]]

ajout[liste_, m_] := 
      PadRight[liste, Length[liste] + Mod[-Length[liste], m]]

codetxclair = ajout[codetxclair, 5]

codebloc[liste_, m_] := 
      Map[FromDigits[#, 32] &, Partition[liste, m]]

codetxclair = codebloc[codetxclair, 5]

decodebloc[liste_, m_] := 
      decode[Flatten[Map[IntegerDigits[#, 32, m] &, liste]]]

decodebloc[codetxclair, 5]

codetxchiffre = Mod[codetxclair + 12345678, 32^5]

decodebloc[codetxchiffre, 5]

decodebloc[Mod[codetxchiffre - 12345678, 32^5], 5]

texteclair = "ving minutes plus tard,harry sortit du magasin de \
hiboux avec une grande cage a l'interieur de laquelle une magnifique chouette \
aux plumes blanches comme la neige dormait paisiblement.";

decode[Mod[13  code[texteclair] + 8, 32]]

codetxclair = code[texteclair];

Shallow[codetxclair]

vigenere[liste_, cle_] := 
      Mod[liste + PadRight[cle, Length[liste], cle], 32]

codetxchiffre = vigenere[codetxclair, {10, 8, 20}]

decode[codetxchiffre]

vigenere[codetxchiffre, -{10, 8, 20}]

texteclair = "le phenix sur lequel a ete preleve la plume qui se \
trouve dans votre baguette a egalement fourni une autre plume a une autre \
baguette.";

codetxclair = ajout[code[texteclair], 2];

Shallow[codetxclair]

a = {{5, 17}, {4, 21}};

MatrixForm[a]

hill[a_, liste_] := 
      Flatten[Map[Mod[a . # , 32] &, 
          Partition[liste, Length[a]]]]

codetxchiffre = hill[a, codetxclair]

Inverse[a, Modulus -> 32]

hill[Inverse[a, Modulus -> 32], codetxchiffre]

p = {{0, 1, 0}, {0, 0, 1}, {1, 0, 0}}

decode[hill[p, codetxclair]]

texteclair = "essayer un chapeau valait beaucoup mieux que d'etre \
oblige de jeter un sort,mais il aurait prefere ne pas avoir a le faire devant \
tout le monde.";

codetxclair = code[texteclair]

flot[liste_, k_] := 
      Mod[Drop[Prepend[liste, k], -1] + liste, 32]

flot[codetxclair, 5]

decode[%]