- Caesar-salaus on yksinkertainen salaustekniikka, jota Julius Caesar käytti lähettääkseen salaisia viestejä liittolaisilleen. Se toimii siirtämällä tekstiviestissä olevia kirjaimia tietyllä määrällä paikkoja, jotka tunnetaan nimellä vaihto tai näppäin.
- Caesar Cipher -tekniikka on yksi varhaisimmista ja yksinkertaisimmista salaustekniikan menetelmistä. Se on yksinkertaisesti eräänlainen korvaussalaus, eli jokainen tietyn tekstin kirjain korvataan kirjaimella, jolla on kiinteä määrä paikkoja aakkosessa. Esimerkiksi 1:n siirrolla A korvattaisiin B:llä, B:stä C ja niin edelleen. Menetelmä on ilmeisesti nimetty Julius Caesarin mukaan, joka ilmeisesti käytti sitä kommunikoidakseen virkamiestensä kanssa.
- Siten tietyn tekstin salaamiseen tarvitsemme kokonaisluvun arvon, joka tunnetaan siirtona, joka osoittaa, kuinka monta paikkaa tekstin kukin kirjain on siirretty alaspäin.
Salaus voidaan esittää modulaarisella aritmetiikalla muuntamalla ensin kirjaimet numeroiksi kaavion mukaisesti A = 0, B = 1,…, Z = 25. Kirjaimen salaus siirrolla n voidaan kuvata matemaattisesti seuraavasti. - Jos siirto on esimerkiksi 3, kirjain A korvataan kirjaimella D, B:stä E, C:stä F ja niin edelleen. Aakkoset on kiedottu niin, että Z:n jälkeen se alkaa takaisin A:sta.
- Tässä on esimerkki Caesar-salauksen käyttämisestä HELLO-viestin salaamiseen 3:n siirrolla:
- Kirjoita tekstiviesti: HELLO
- Valitse siirtoarvo. Tässä tapauksessa käytämme 3:n siirtoa.
- Korvaa jokainen tekstiviestin kirjain kirjaimella, joka on kolme kohtaa oikealla aakkosissa.
H muuttuu K:ksi (siirto 3 H:sta)
E muuttuu H:ksi (siirto 3 E:stä)
L muuttuu O:ksi (siirto 3 L:stä)
java lajittelumerkkijonoja
L muuttuu O:ksi (siirto 3 L:stä)
O muuttuu R:ksi (siirto 3 O:sta)
4.Salattu viesti on nyt KHOOR.
- Viestin salauksen purkamiseksi sinun on yksinkertaisesti siirrettävä jokaista kirjainta taaksepäin saman verran. Tässä tapauksessa siirrät jokaista KHOORin kirjainta 3 paikkaa taaksepäin saadaksesi alkuperäisen viestin HELLO.
(Salausvaihe vaihdolla n)
java xor
(Salauksen purkuvaihe vaihdolla n)

Esimerkkejä:
Text : ABCDEFGHIJKLMNOPQRSTUVWXYZ Shift : 23 Cipher : XYZABCDEFGHIJKLMNOPQRSTUVW Text : ATTACKATONCE Shift : 4 Cipher : EXXEGOEXSRGI>
Edut:
- Helppo toteuttaa ja käyttää, joten se sopii aloittelijoille salauksen oppimiseen.
- Voidaan toteuttaa fyysisesti, kuten pyörivien levyjen tai korttien avulla, joka tunnetaan nimellä scytale, josta voi olla hyötyä tietyissä tilanteissa.
- Vaatii vain pienen joukon ennalta jaettuja tietoja.
- Voidaan muokata helposti turvallisemman muunnelman luomiseksi, esimerkiksi käyttämällä useita siirtoarvoja tai avainsanoja.
Haitat:
- Se ei ole suojattu nykyaikaisia salauksenpurkumenetelmiä vastaan.
- Alttiina tunnetuille selkotekstihyökkäyksille, joissa hyökkääjällä on pääsy samojen viestien sekä salattuihin että salaamattomiin versioihin.
- Mahdollisten avainten pieni määrä tarkoittaa, että hyökkääjä voi helposti kokeilla kaikkia mahdollisia avaimia, kunnes oikea löytyy, jolloin se on alttiina raa'an voiman hyökkäykselle.
- Se ei sovellu pitkän tekstin salaukseen, koska se olisi helppo murtaa.
- Se ei sovellu suojattuun viestintään, koska se rikkoutuu helposti.
- Ei tarjoa luottamuksellisuutta, eheyttä ja aitoutta viestissä.
Caesar-salauksen ominaisuudet:
- Korvaussalaus: Caesar-salaus on korvaussalauksen tyyppi, jossa jokainen selkeän tekstin kirjain korvataan kirjaimella, joka on tietty määrä aakkosia alaspäin.
- Kiinteä avain: Caesar-salauksessa käytetään kiinteää avainta, joka on paikkojen lukumäärä, jolla kirjaimet siirtyvät. Tämä avain on sekä lähettäjän että vastaanottajan tiedossa.
- Symmetrinen salaus: Caesar-salaus on symmetrinen salaustekniikka, mikä tarkoittaa, että samaa avainta käytetään sekä salaukseen että salauksen purkamiseen.
- Rajoitettu näppäinavaruus: Caesar-salauksessa on vain 26 mahdollista näppäintä, koska englannin aakkosissa on vain 26 kirjainta.
- Alttiina raa'an voiman hyökkäyksille: Caesar-salaus on alttiina raa'an voiman hyökkäyksille, koska kokeilevia avaimia on vain 26.
- Helppo toteuttaa: Caesar-salaus on erittäin helppo ottaa käyttöön ja vaatii vain yksinkertaisia aritmeettisia operaatioita, joten se on suosittu valinta yksinkertaisiin salaustehtäviin.
Caesar-salauksen säännöt:
kuinka tarkistaa estetyt numerot Androidilla
- Valitse luku väliltä 1–25. Tämä on siirtoarvosi.
- Kirjoita aakkosten kirjaimet järjestyksessä A:sta Z:hen.
- Siirrä kutakin aakkosten kirjainta siirtoarvon verran. Esimerkiksi, jos siirtoarvo on 3, A:sta tulee D, B:stä E, C:stä F ja niin edelleen.
- Salaa viestisi korvaamalla jokainen kirjain vastaavalla siirtyneellä kirjaimella. Jos esimerkiksi siirtoarvo on 3, sanasta hello tulee khoor.
- Pura viestin salaus kääntämällä prosessi päinvastaiseksi siirtämällä jokaista kirjainta taaksepäin saman verran. Jos siirtoarvo on esimerkiksi 3, salatusta viestistä khoor tulee hello.
Algoritmi Caesar Cipherille:
Syöte:
- Valitse siirtoarvo väliltä 1–25.
- Kirjoita aakkoset ylös järjestyksessä A:sta Z:hen.
- Luo uusi aakkosto siirtämällä kutakin alkuperäisen aakkoston kirjainta siirtoarvon verran. Jos siirtoarvo on esimerkiksi 3, uusi aakkoset olisivat:
- 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 - Korvaa viestin jokainen kirjain vastaavalla kirjaimella uudesta aakkosesta. Jos esimerkiksi siirtoarvo on 3, sanasta hello tulee khoor.
- Pura viestin salaus siirtämällä jokaista kirjainta taaksepäin saman verran. Jos siirtoarvo on esimerkiksi 3, salatusta viestistä khoor tulee hello.
Toimenpide:
- Siirrä annettu teksti yksi merkki kerrallaan.
- Muunna kullekin merkille annettu merkki säännön mukaisesti sen mukaan, salataanko teksti vai puretaanko salaus.
- Palauta uusi luotu merkkijono.
Ohjelma, joka vastaanottaa tekstin (merkkijono) ja Shift-arvon (kokonaisluku) ja palauttaa salatun tekstin.
c++ jaettu merkkijono
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)); } }> |
>
>
Python 3
#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>>>
LähtöText : ATTACKATONCE Shift: 4 Cipher: EXXEGOEXSRGI>Aika monimutkaisuus: O(N) missä N on annetun tekstin pituus
Aputila: PÄÄLLÄ)Kuinka purkaa salaus?
Voimme joko kirjoittaa toisen salauksen purkutoiminnon, joka on samanlainen kuin salaus, joka käyttää annettua muutosta vastakkaiseen suuntaan alkuperäisen tekstin salauksen purkamiseksi. Voimme kuitenkin käyttää salauksen syklistä ominaisuutta modulon alla, joten voimme yksinkertaisesti tarkkaillaCipher(n) = De-cipher(26-n)>Siksi voimme käyttää samaa toimintoa salauksen purkamiseen, sen sijaan muokkaamme shift-arvoa siten, että shift = 26-shift (katso tästä esimerkkiajosta C++:ssa).