- Cæsar-chifferet er en simpel krypteringsteknik, som blev brugt af Julius Cæsar til at sende hemmelige beskeder til sine allierede. Det virker ved at flytte bogstaverne i klartekstmeddelelsen med et bestemt antal positioner, kendt som skiftet eller tasten.
- Caesar Cipher-teknikken er en af de tidligste og enkleste metoder til krypteringsteknik. Det er simpelthen en form for substitutions-chiffer, dvs. at hvert bogstav i en given tekst erstattes af et bogstav med et fast antal positioner nede i alfabetet. For eksempel med et skift på 1, ville A blive erstattet af B, B ville blive til C, og så videre. Metoden er tilsyneladende opkaldt efter Julius Cæsar, som tilsyneladende brugte den til at kommunikere med sine embedsmænd.
- For at kryptere en given tekst har vi altså brug for en heltalsværdi, kendt som et skift, der angiver antallet af positioner, hvert bogstav i teksten er blevet flyttet ned.
Krypteringen kan repræsenteres ved hjælp af modulær aritmetik ved først at omdanne bogstaverne til tal, ifølge skemaet, A = 0, B = 1,…, Z = 25. Kryptering af et bogstav med et skift n kan beskrives matematisk som. - For eksempel, hvis skiftet er 3, ville bogstavet A blive erstattet af bogstavet D, B ville blive E, C ville blive F, og så videre. Alfabetet er viklet rundt, så det efter Z starter tilbage ved A.
- Her er et eksempel på, hvordan man bruger Cæsar-chifferet til at kryptere meddelelsen HELLO med et skift på 3:
- Skriv klartekstbeskeden ned: HEJ
- Vælg en skiftværdi. I dette tilfælde vil vi bruge et skift på 3.
- Erstat hvert bogstav i klartekstmeddelelsen med bogstavet, der er tre positioner til højre i alfabetet.
H bliver K (skift 3 fra H)
E bliver til H (skift 3 fra E)
L bliver O (skift 3 fra L)
c formateret streng
L bliver O (skift 3 fra L)
O bliver til R (skift 3 fra O)
ssh fuld formular
4.Den krypterede besked er nu KHOOR.
- For at dekryptere beskeden skal du blot flytte hvert bogstav tilbage med det samme antal positioner. I dette tilfælde ville du flytte hvert bogstav i KHOOR tilbage med 3 positioner for at få den oprindelige besked, HALLO.
(Krypteringsfase med skift n)
(Dekrypteringsfase med skift n)

Eksempler:
Text : ABCDEFGHIJKLMNOPQRSTUVWXYZ Shift : 23 Cipher : XYZABCDEFGHIJKLMNOPQRSTUVW Text : ATTACKATONCE Shift : 4 Cipher : EXXEGOEXSRGI>
Fordele:
- Let at implementere og bruge, hvilket gør det egnet for begyndere at lære om kryptering.
- Kan implementeres fysisk, såsom med et sæt roterende diske eller et sæt kort, kendt som en scytale, hvilket kan være nyttigt i visse situationer.
- Kræver kun et lille sæt foruddelte oplysninger.
- Kan nemt ændres for at skabe en mere sikker variant, f.eks. ved at bruge flere skiftværdier eller nøgleord.
Ulemper:
- Det er ikke sikkert mod moderne dekrypteringsmetoder.
- Sårbar over for kendte angreb i almindelig tekst, hvor en angriber har adgang til både de krypterede og ukrypterede versioner af de samme meddelelser.
- Det lille antal mulige nøgler betyder, at en angriber nemt kan prøve alle mulige nøgler, indtil den rigtige er fundet, hvilket gør den sårbar over for et brute force-angreb.
- Det er ikke egnet til lang tekstkryptering, da det ville være nemt at knække.
- Den er ikke egnet til sikker kommunikation, da den let brydes.
- Giver ikke fortrolighed, integritet og autenticitet i en besked.
Funktioner af Cæsar-chiffer:
- Substitutions-ciffer: Cæsar-cifferet er en type substitutions-ciffer, hvor hvert bogstav i klarteksten erstattes af et bogstav et eller andet fast antal positioner nede i alfabetet.
- Fast nøgle: Cæsar-chifferet bruger en fast nøgle, som er antallet af positioner, som bogstaverne forskydes med. Denne nøgle er kendt af både afsender og modtager.
- Symmetrisk kryptering: Cæsar-chifferet er en symmetrisk krypteringsteknik, hvilket betyder, at den samme nøgle bruges til både kryptering og dekryptering.
- Begrænset nøglerum: Cæsar-chifferet har et meget begrænset nøglerum på kun 26 mulige nøgler, da der kun er 26 bogstaver i det engelske alfabet.
- Sårbar over for brute force-angreb: Cæsar-chifferet er sårbar over for brute force-angreb, da der kun er 26 mulige nøgler at prøve.
- Let at implementere: Cæsar-chifferet er meget nemt at implementere og kræver kun simple aritmetiske operationer, hvilket gør det til et populært valg til simple krypteringsopgaver.
Regler for Cæsar Cipher:
css til tekstombrydning
- Vælg et tal mellem 1 og 25. Dette vil være din skiftværdi.
- Skriv bogstaverne i alfabetet ned i rækkefølge fra A til Z.
- Skift hvert bogstav i alfabetet med skiftværdien. For eksempel, hvis forskydningsværdien er 3, bliver A til D, B bliver til E, C bliver til F og så videre.
- Krypter din besked ved at erstatte hvert bogstav med det tilsvarende flyttede bogstav. For eksempel, hvis skiftværdien er 3, ville ordet hej blive til khoor.
- For at dekryptere meddelelsen skal du blot vende processen ved at flytte hvert bogstav tilbage med det samme beløb. For eksempel, hvis skiftværdien er 3, ville den krypterede besked khoor blive hej.
Algoritme for Caesar Cipher:
Input:
c kodearray af strenge
- Vælg en skiftværdi mellem 1 og 25.
- Skriv alfabetet ned i rækkefølge fra A til Z.
- Opret et nyt alfabet ved at flytte hvert bogstav i det originale alfabet med skiftværdien. For eksempel, hvis skiftværdien er 3, vil det nye alfabet være:
- 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 - Erstat hvert bogstav i beskeden med det tilsvarende bogstav fra det nye alfabet. For eksempel, hvis skiftværdien er 3, ville ordet hej blive til khoor.
- For at dekryptere meddelelsen skal du flytte hvert bogstav tilbage med det samme beløb. For eksempel, hvis skiftværdien er 3, ville den krypterede besked khoor blive hej.
Procedure:
- Gennemgå den givne tekst et tegn ad gangen.
- For hvert tegn skal du transformere det givne tegn i henhold til reglen, afhængigt af om vi krypterer eller dekrypterer teksten.
- Returner den nye genererede streng.
Et program, der modtager en tekst (streng) og Shift-værdi (heltal) og returnerer den krypterede tekst.
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 |
>
>
Javascript
> //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> |
>
>
Produktion
Text : ATTACKATONCE Shift: 4 Cipher: EXXEGOEXSRGI>
Tidskompleksitet: O(N) hvor N er længden af den givne tekst
Hjælpeplads: PÅ)
Hvordan dekrypteres?
Vi kan enten skrive en anden funktion dekryptere, der ligner kryptering, som vil anvende det givne skift i den modsatte retning for at dekryptere den originale tekst. Men vi kan bruge chifferens cykliske egenskab under modulo, derfor kan vi simpelthen observere
Cipher(n) = De-cipher(26-n)>
Derfor kan vi bruge den samme funktion til at dekryptere, i stedet vil vi ændre skiftværdien, således at skift = 26-skift (se dette for en prøvekørsel i C++).