>> Home >> Algoritmy >> Java: Caesarova šifra

 

Java: Caesarova šifra

 

Caesarova šifra je jeden z nejstarších algoritmů šifrování zpráv. Tato šifra je pojmenována po Juliu Caesarovi, který byl první, nebo alespoň jeden z prvních, kteří tuto šifru používali. Caesar ji konkrétně používal pro vojenskou komunikaci. Šifra funguje velice jednoduchým způsobem - je také snadno prolomitelná.

Princip šifry je takový, že se každé písmenko posune podle pevně určeného počtu prvků. To znamená, že když budeme chtít zašifrovat zprávu 'abc' pomocí klíče 2 (myslím tím posun), tak nám vznikne řetězec 'cde'.

caesarova sifra

Jak je toto šifrování jednoduché, tak je také lehce prolomitelné, a to především bruteforce útokem.

Implementace do Javy:

Pro toto šifrování jsem sepsal primitivní malou třídu, která obsahuje 2 metody. Jedna metoda šifruje a druhá dešifruje. Zde je celá třída:

 

  public class Caesar {

    // promenne
    private int key;
    private char znak;
    private String text;
    private StringBuffer sifra = new StringBuffer();
    
    //konstruktor
    public Caesar(String text, int key) {
    
        this.key = key;
        this.text = text;
    }
    
    //metoda code k sifrovani
    public String code() {
    
        for(int i = 0;i < text.length();i++) {
            znak = (char) (text.charAt(i) + key);
            if(znak > 'z')
                znak = (char) (znak - 26);
            sifra.append(znak);
        }
        return sifra.toString();
    }
    
    //metoda decode k desifrovani
    public String decode() {
    
        for(int i = 0;i < text.length();i++) {
            znak = (char) (text.charAt(i) - key);
            if(znak < 'a')
                znak = (char) (znak + 26);
            sifra.append(znak);
        }
        return sifra.toString();
    }
}

 

Myslím, že detajlnější rozbor je v tuto chvíli zbytečný. Třída a její metody jsou opravdu jednoduché. Zde ještě ukážu vytvoření instance této třídy a výpis metody pro zašifrování.

 

    public static void main(String[] args) {

        Caesar objekt = new Caesar("defg", 3);
      
        System.out.print(objekt.decode());
    }

 

Tento kousek kodu by vypsal - cjql
 

 

pridej.cz Přidat.eu záložku

 

Diskuze k článku


 

Zatím žádné komentáže k tomuto článku.

 

Přidat nový komentář