facile
Chiffre de César
Le chiffrement de César transforme un message en changeant chaque lettre par une autre obtenue par décalage circulaire dans l'alphabet de la lettre d'origine. Par exemple, avec un décalage de 3, le 'A' se transforme en 'D' , le 'B' en 'E' , ..., le 'X' en 'A' , le 'Y' en 'B' et le 'Z' en 'C' .
flowchart TD
subgraph "Décalage de 3"
direction TB
bef1[...]
W1[W]
X1[X]
Y1[Y]
Z1[Z]
A1[A]
B1[B]
C1[C]
D1[D]
aft1[...]
end
subgraph " "
bef2[...]
Z2[Z]
A2[A]
B2[B]
C2[C]
D2[D]
E2[E]
F2[F]
G2[G]
aft2[...]
end
W1 --> Z2
X1 --> A2
Y1 --> B2
Z1 --> C2
A1 --> D2
B1 --> E2
C1 --> F2
D1 --> G2
Les autres caractères ('!' , '?' ...) ne sont pas transformés et sont simplement recopiés tels quels dans le message codé.
Dans cet exercice, nous ne prendrons que des lettres majuscules.
On fournit les deux fonctions
indice : renvoie l'indice dans l'alphabet d'une lettre majuscule en commençant à 0.
majuscule : renvoie la lettre majuscule d'indice donné.
Exemples
🐍 Console Python >>> indice ( 'C' )
2
>>> majuscule ( 4 )
'E'
Remarque
Pour opérer un décalage circulaire d'un indice, on utilise l'opération modulo \(26\) qui renvoie un résultat de \(0\) inclus à \(26\) exclu.
Décalage de 8 pour la lettre 'Z'
🐍 Console Python >>> indice ( 'Z' )
25
>>> 25 + 8
33
>>> 33 % 26
7
>>> majuscule ( 7 )
'H'
Le chiffrement de
'Z' sera ici
'H' .
Objectif
Écrire la fonction cesar qui prend en paramètres une chaine de caractères message et un nombre entier decalage et renvoie le nouveau message chiffré avec le chiffre de César utilisant ce decalage.
On constate que pour déchiffrer un message, il suffit d'utiliser la clé opposée à celle du chiffrement.
Exemples
🐍 Console Python >>> cesar ( "HELLO WORLD!" , 5 )
'MJQQT BTWQI!'
>>> cesar ( "MJQQT BTWQI!" , - 5 )
'HELLO WORLD!'
.65038.128013.9875s3_8èufvy n7ZaêS1me(P24C:jtwi`h)6o;bcdgù/0làqAp.r-R,=+k%95Jé050O0v0D0q0F0T0d0m0N0T0q0d0d0%010D0F0X010406050d0i0u0u0q0Z0l040s0K0T0i120K0n0m020q0u0X0L0m0#0v1c0Z0V0i0v0d050R191b1d1f170X041D1K051N0R1N1P1K170O0F0k0`0|0~100H0F0P0H0T1%0H0D15050=0M0T0v1Y0}0 011$1(1*1(0D1:1=1.0D0M0K0O1f1/0Z1L0D0H0`1i0d0X0q0n100y011@1!010j0@0v0n1q0v1.2f2h2m1_2p1=2s0u2u040b0m0x0Z0K0X0K0d0F1l1n0:2d0Z0Z0v0N2P1D2w0n1L0R2b2#0D29282a0O2y101*0n2r2M1.1V1X0{1^2/0F2;0n251W1.0X2U1L2Z2#36182g1n2`2n2 0Z1c0T150m0t2Y3a16392x3c1_3e3g3i0y3l2h3n2Z2.013s0q3h040m0e3w2!173z3q103C3E0m0z3I3y3a3A3O3i0,3S3K3U3M3B0K3f3D3i0J3Z3o3b1Z3r3(3t3F0o3-3L3:3N3=3*3F0g3_3#3{3%3)3P0+413p433W040t0S483/2{443?0t3k1E3m3!494h4b0t3v4m3x4o4g3d3}3E0t3H4u3J3.3V4z150t3R4D3T4p4y454I3Y4L4w4G4P4c3,4S4F3$4r3^4Y3`4q4H4c404%424)4V0t474-4N3;4V0y4e4?4x4^3?0y4l364T4!4*0y4t524Z4a554C381Q341D2^2(0O2,3A0N252E0/1W1L330v353m3S055m0:5u4@100)150:0j5w4(2n0E3i5H4.3d0j152}1V0N0v5M5B0114040w5V4}3N150N1d0q2W0v2U5#3A5Y0I0B3Z0m5^0m594h0d2k04011v0n0k0K0F1?0T005R0F5T0m2R0G5)0Z5+0D5-0v0G0m1z0F6c640D0m0r2)1?0i2;0m1c0C0i0d0N0i215@5_5{2n5D042U0D0i0Z0n3S5`5I3r0M153(0O5/3$5Y5!4L6I3r5(5*5,5.6%6T105;6R6(100K150!6=6/3B6V046X6Z436#715|5~010W01742n6;4S0653436K5F7a1_5K3F7j3N5P046z6B6D1=7n5X156$386|0n5Q7v5;5?4|3A7l5_5`6.5N1_0d0O15017R6163650m0|6y0q6A6C6E1?0O680n5S7%1m0n0.5U7G3$7O3i5_7r7#1=0w0S0I0m2U62641?000W004f3A7?3F7^7Z7s7$0w0y0,7~807U830p867;43897J7R794S7J6?016K6M6O6Q4L6S7M3N6~0N0H0Z7D7x7v0n6~707L5W738Q5$015}7Q788K040I6{8E016^040(8$5W7B040F8Z8#7d7f4h7h0v5G8T7H5L8|4!7p5T0d1d8Z7y5v7A152D0~0q0P7:7z8%5Y0$8,8U8.0:5)0|9d8;7F528v986L1B6E0=0D9j3A8)0%9A7=768t9s6H6|6K0j3(9E4a6*6g6,9e3m8D5W0K7l2}9O4q991B939p8 72159r4n7J9t8%6K0F8{369V8U8W5 8Y8C8w8)020T0D0L9D9~9u6f6h6j9!2na0a2a4ab7N760p9H979g9,6G9/9/8w8.8:a68%9Cag5%8/7*6a9T3x8w8S9f8-9Qa96-aG8U7c9Iap9:aH8/ax8(15a59^aE8L9*9#aSau9W158+a%9k5E2V3D9caC2!aY8!aT8)0*aT0u0F150y4XaOaP5^ar152U19a20q9za+9Ba)aW9Ub47q8c7`a;5AaMaZaL3V7Ca!7b158=b1aQ8U6K0v0^bka?9-4vb2bwbp9vb79ya^bdaT8.a89Sao9_3A8y0;8AbNb59wb8ba580R5y5t1M5f0R5h1D0D5jb.2*2$24262(0q1;b)b,5q1Jbl3A2U0u0f0j0q0)0v0f0H0e151v1x1z1B0mbDa=1Q3n0H0t0m0F0O100}0X2V0D0!0d2V6O2O2E0W2fcu0m0d0.6D0Z2O0.050q3A0H0v0q0:0Z2:5D0m8I8`1003cscucwcycJ6i2l120D1=100x5-1c2~6rcU150c0a1D0q2#cm3n1K0-7$0_0A0.930Z0m1k0@0F932O0`0;6i6y0.2b5n0m0q0k2V7W003D0X0Hb`0;0m0P2U0N0$0m2 3b0K1rcJ0_2R7X0X1j2g0Z6r0:0_0P0q6E640ddB1cdc7Y2OdH0.0mdNdq0.1*dh2JdY2;0Y1Md0040Adg1?0udj0Hdl2R8H9?0jc22r6r0n001B6r2g0_cGcIdc7/0mdw2)0h0_c50N2q060U0`1^5-eg1n6i0n0=ew0m0D0K6B7Wcg0OcHa/9d0_2L0~0Fb{0_eBet0mc5dc2h6r6w0v062h3D0lcx6ccge20.cf0n92e%0_1=1 b6d;ckb 0W0i0CeB0Z7(0H0i0FdBbz1=eg0deV121*cG7%2he/cg1*0kb60!0C0v0i0m0K0Qfm1n0deBducA6p0n2;d86wcoaA6b1c0d1z0.dBel2q2Dey5+922Nb{e?1T5g0;0?0^04.
# Tests(insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)