- Cēzara šifrs ir vienkārša šifrēšanas metode, ko Jūlijs Cēzars izmantoja, lai saviem sabiedrotajiem nosūtītu slepenus ziņojumus. Tas darbojas, mainot burtus vienkāršā teksta ziņojumā par noteiktu pozīciju skaitu, kas pazīstams kā pārslēgšana vai taustiņš.
- Cēzara šifrēšanas tehnika ir viena no senākajām un vienkāršākajām šifrēšanas metodēm. Tas ir vienkārši aizstāšanas šifra veids, t.i., katrs noteiktā teksta burts tiek aizstāts ar burtu ar noteiktu pozīciju skaitu alfabēta lejasdaļā. Piemēram, nobīdot 1, A tiktu aizstāts ar B, B kļūtu par C utt. Acīmredzot metode ir nosaukta Jūlija Cēzara vārdā, kurš acīmredzot to izmantoja, lai sazinātos ar amatpersonām.
- Tādējādi, lai šifrētu doto tekstu, mums ir nepieciešama vesela skaitļa vērtība, kas pazīstama kā maiņa, kas norāda pozīciju skaitu, kurā katrs teksta burts ir pārvietots uz leju.
Šifrēšanu var attēlot, izmantojot modulāro aritmētiku, vispirms pārveidojot burtus skaitļos, pēc shēmas A = 0, B = 1,…, Z = 25. Burta šifrēšanu ar nobīdi n var raksturot matemātiski kā. - Piemēram, ja maiņa ir 3, tad burts A tiktu aizstāts ar burtu D, B kļūtu par E, C kļūtu par F utt. Alfabēts ir apvilkts tā, lai pēc Z tas sākas ar A.
- Šeit ir piemērs, kā izmantot Cēzara šifru, lai šifrētu ziņojumu HELLO, mainot 3:
- Pierakstiet vienkāršā teksta ziņojumu: HELLO
- Izvēlieties maiņas vērtību. Šajā gadījumā mēs izmantosim maiņu 3.
- Aizstājiet katru burtu vienkāršā teksta ziņojumā ar burtu, kas ir trīs pozīcijas pa labi alfabētā.
H kļūst par K (nobīde 3 no H)
E kļūst par H (3. maiņa no E)
L kļūst par O (nobīde 3 no L)
str.replace valodā java
L kļūst par O (nobīde 3 no L)
O kļūst par R (nobīde 3 no O)
4.Šifrētais ziņojums tagad ir KHOOR.
c Būla
- Lai atšifrētu ziņojumu, jums vienkārši ir jāpārvieto katrs burts atpakaļ par tādu pašu pozīciju skaitu. Šādā gadījumā jūs pārvietojiet katru KHOOR burtu par 3 pozīcijām atpakaļ, lai iegūtu sākotnējo ziņojumu, HELLO.
(Šifrēšanas fāze ar maiņu n)
(Atšifrēšanas fāze ar maiņu n)

Piemēri:
vienāds ar metodi java
Text : ABCDEFGHIJKLMNOPQRSTUVWXYZ Shift : 23 Cipher : XYZABCDEFGHIJKLMNOPQRSTUVW Text : ATTACKATONCE Shift : 4 Cipher : EXXEGOEXSRGI>
Priekšrocības:
- Viegli ieviešams un lietojams, tāpēc tas ir piemērots iesācējiem, lai uzzinātu par šifrēšanu.
- Var tikt fiziski īstenots, piemēram, ar rotējošu disku komplektu vai karšu komplektu, kas pazīstams kā scytale, kas var būt noderīgs noteiktās situācijās.
- Nepieciešama tikai neliela iepriekš kopīgotas informācijas kopa.
- Var viegli modificēt, lai izveidotu drošāku variantu, piemēram, izmantojot vairākas maiņas vērtības vai atslēgvārdus.
Trūkumi:
- Tas nav drošs pret mūsdienu atšifrēšanas metodēm.
- Neaizsargāts pret zināma vienkāršā teksta uzbrukumiem, kad uzbrucējam ir piekļuve gan vienu un to pašu ziņojumu šifrētajām, gan nešifrētajām versijām.
- Nelielais iespējamo atslēgu skaits nozīmē, ka uzbrucējs var viegli izmēģināt visas iespējamās atslēgas, līdz tiek atrasta pareizā, padarot to neaizsargātu pret brutāla spēka uzbrukumu.
- Tas nav piemērots gara teksta šifrēšanai, jo to būtu viegli uzlauzt.
- Tas nav piemērots drošai saziņai, jo tas ir viegli sabojājams.
- Nenodrošina ziņojuma konfidencialitāti, integritāti un autentiskumu.
Cēzara šifra iezīmes:
- Aizstāšanas šifrs: Cēzara šifrs ir aizstāšanas šifra veids, kurā katrs burts vienkāršajā tekstā tiek aizstāts ar burtu, kas ir noteikts alfabēta pozīciju skaits.
- Fiksētā atslēga: Cēzara šifrs izmanto fiksētu atslēgu, kas ir pozīciju skaits, par kuru burti tiek pārvietoti. Šī atslēga ir zināma gan sūtītājam, gan saņēmējam.
- Simetriskā šifrēšana: Cēzara šifrs ir simetriskas šifrēšanas paņēmiens, kas nozīmē, ka gan šifrēšanai, gan atšifrēšanai tiek izmantota viena un tā pati atslēga.
- Ierobežota taustiņtelpa: Cēzara šifram ir ļoti ierobežota taustiņtelpa, kurā ir tikai 26 iespējamie taustiņi, jo angļu alfabētā ir tikai 26 burti.
- Neaizsargāts pret brutāla spēka uzbrukumiem: Cēzara šifrs ir neaizsargāts pret brutālā spēka uzbrukumiem, jo ir tikai 26 iespējamie taustiņi, ko izmēģināt.
- Viegli īstenojams: Cēzara šifru ir ļoti viegli ieviest, un tam ir nepieciešamas tikai vienkāršas aritmētiskas darbības, tāpēc tas ir populāra izvēle vienkāršu šifrēšanas uzdevumu veikšanai.
Cēzara šifra noteikumi:
- Izvēlieties skaitli no 1 līdz 25. Tā būs jūsu maiņas vērtība.
- Pierakstiet alfabēta burtus secībā no A līdz Z.
- Pārbīdiet katru alfabēta burtu par maiņas vērtību. Piemēram, ja nobīdes vērtība ir 3, A kļūtu par D, B kļūtu par E, C kļūtu par F utt.
- Šifrējiet savu ziņojumu, aizstājot katru burtu ar atbilstošo nobīdīto burtu. Piemēram, ja maiņas vērtība ir 3, vārds hello kļūs par khoor.
- Lai atšifrētu ziņojumu, vienkārši apgrieziet procesu, pārvietojot katru burtu atpakaļ par tādu pašu summu. Piemēram, ja maiņas vērtība ir 3, šifrētais ziņojums khoor kļūs par sveiki.
Cēzara šifra algoritms:
Ievade:
- Izvēlieties maiņas vērtību no 1 līdz 25.
- Pierakstiet alfabētu secībā no A līdz Z.
- Izveidojiet jaunu alfabētu, pārvietojot katru sākotnējā alfabēta burtu par maiņas vērtību. Piemēram, ja maiņas vērtība ir 3, jaunais alfabēts būs šāds:
- 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
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 - Nomainiet katru ziņojuma burtu ar atbilstošo burtu no jaunā alfabēta. Piemēram, ja maiņas vērtība ir 3, vārds hello kļūs par khoor.
- Lai atšifrētu ziņojumu, pārvietojiet katru burtu atpakaļ par tādu pašu summu. Piemēram, ja maiņas vērtība ir 3, šifrētais ziņojums khoor kļūs par sveiki.
Procedūra:
cik pilsētu Amerikas Savienotajās Valstīs
- Pārvietojiet doto tekstu pa vienai rakstzīmei.
- Katrai rakstzīmei pārveidojiet norādīto rakstzīmi atbilstoši noteikumam atkarībā no tā, vai mēs šifrējam vai atšifrējam tekstu.
- Atgriezt jauno ģenerēto virkni.
Programma, kas saņem teksta (virknes) un Shift vērtību (vesels skaitlis) un atgriež šifrētu tekstu.
C++
// A C++ program to illustrate Caesar Cipher Technique> #include> using> namespace> std;> // This function receives text and shift and> // returns the encrypted text> string encrypt(string text,>int> s)> {> >string result =>''>;> >// traverse text> >for> (>int> i = 0; i // apply transformation to each character // Encrypt Uppercase letters if (isupper(text[i])) result += char(int(text[i] + s - 65) % 26 + 65); // Encrypt Lowercase letters else result += char(int(text[i] + s - 97) % 26 + 97); } // Return the resulting string return result; } // Driver program to test the above function int main() { string text = 'ATTACKATONCE'; int s = 4; cout << 'Text : ' << text; cout << '
Shift: ' << s; cout << '
Cipher: ' << encrypt(text, s); return 0; }> |
>
>
Java
//A Java Program to illustrate Caesar Cipher Technique> class> CaesarCipher> {> >// Encrypts text using a shift of s> >public> static> StringBuffer encrypt(String text,>int> s)> >{> >StringBuffer result=>new> StringBuffer();> >for> (>int> i=>0>; i { if (Character.isUpperCase(text.charAt(i))) { char ch = (char)(((int)text.charAt(i) + s - 65) % 26 + 65); result.append(ch); } else { char ch = (char)(((int)text.charAt(i) + s - 97) % 26 + 97); result.append(ch); } } return result; } // Driver code public static void main(String[] args) { String text = 'ATTACKATONCE'; int s = 4; System.out.println('Text : ' + text); System.out.println('Shift : ' + s); System.out.println('Cipher: ' + encrypt(text, s)); } }> |
>
>
Python3
#A python program to illustrate Caesar Cipher Technique> def> encrypt(text,s):> >result>=> ''> ># traverse text> >for> i>in> range>(>len>(text)):> >char>=> text[i]> ># Encrypt uppercase characters> >if> (char.isupper()):> >result>+>=> chr>((>ord>(char)>+> s>->65>)>%> 26> +> 65>)> ># Encrypt lowercase characters> >else>:> >result>+>=> chr>((>ord>(char)>+> s>-> 97>)>%> 26> +> 97>)> >return> result> #check the above function> text>=> 'ATTACKATONCE'> s>=> 4> print> (>'Text : '> +> text)> print> (>'Shift : '> +> str>(s))> print> (>'Cipher: '> +> encrypt(text,s))> |
>
>
C#
// A C# Program to illustrate Caesar Cipher Technique> using> System;> using> System.Text;> public> class> CaesarCipher> {> >// Encrypts text using a shift on s> >public> static> StringBuilder encrypt(String text,>int> s)> >{> >StringBuilder result=>new> StringBuilder();> >for> (>int> i=0; i { if (char.IsUpper(text[i])) { char ch = (char)(((int)text[i] + s - 65) % 26 + 65); result.Append(ch); } else { char ch = (char)(((int)text[i] + s - 97) % 26 + 97); result.Append(ch); } } return result; } // Driver code public static void Main(String[] args) { String text = 'ATTACKATONCE'; int s = 4; Console.WriteLine('Text : ' + text); Console.WriteLine('Shift : ' + s); Console.WriteLine('Cipher: ' + encrypt(text, s)); } } /* This code contributed by PrinciRaj1992 */> |
>
>
PHP
// A PHP program to illustrate Caesar // Cipher Technique // This function receives text and shift // and returns the encrypted text function encrypt($text, $s) { $result = ''; // traverse text for ($i = 0; $i |
>
>//A Javascript Program to illustrate Caesar Cipher Technique>>>// Encrypts text using a shift on s>>function>encrypt(text, s)>>{>>let result=>''>>for>(let i = 0; i { let char = text[i]; if (char.toUpperCase(text[i])) { let ch = String.fromCharCode((char.charCodeAt(0) + s-65) % 26 + 65); result += ch; } else { let ch = String.fromCharCode((char.charCodeAt(0) + s-97) % 26 + 97); result += ch; } } return result; } // Driver code let text = 'ATTACKATONCE'; let s = 4; document.write('Text : ' + text + ' '); document.write('Shift : ' + s + ' '); document.write('Cipher: ' + encrypt(text, s) + ' '); // This code is contributed by avanitrachhadiya2155>>>
IzvadeText : ATTACKATONCE Shift: 4 Cipher: EXXEGOEXSRGI>Laika sarežģītība: O(N) kur N ir dotā teksta garums
Palīgtelpa: O(N)Kā atšifrēt?
Mēs varam uzrakstīt citu funkciju atšifrēt, kas ir līdzīga šifrēšanai, kas piemēros doto nobīdi pretējā virzienā, lai atšifrētu oriģinālo tekstu. Tomēr mēs varam izmantot šifra ciklisko īpašību modulo, tāpēc mēs varam vienkārši novērotCipher(n) = De-cipher(26-n)>Tādējādi mēs varam izmantot to pašu funkciju, lai atšifrētu, tā vietā mēs modificēsim maiņas vērtību tā, lai Shift = 26 shift (skatiet šo parauga izpildei C++ valodā).