Java, szyfr bacona (implementacja)

Bash, C, C++, Java, PHP, Ruby, GTK, Qt i wiele innych - wszystko tutaj.
kondes
Sędziwy Jeż
Sędziwy Jeż
Posty: 42
Rejestracja: 29 lis 2009, 01:28
Płeć: Mężczyzna
Wersja Ubuntu: 10.04
Środowisko graficzne: GNOME
Architektura: x86

Java, szyfr bacona (implementacja)

Post autor: kondes »

Witam!
pisze program szyfrujący i deszyfrujący na podstawie tego szyfru http://pl.wikipedia.org/wiki/Szyfr_Bacona
część odnośnie szyfrowania już za mną teraz zabieram się do części deszyfrującej.

Kod: Zaznacz cały

public void szyfrowanie() {
        String wynik = "";
        char x[ ] =  jTextField1.getText().toCharArray( );
        for( int i=0 ; i<x.length ; i++){
                if(x[i] ==97){wynik=wynik+"aaaaa";}//a
Tak to wygląda dla szyfrowania dla każdej litery alfabetu w kodzie ascii (http://pl.wikipedia.org/wiki/ASCII). Nie wiem jak się zabrać do deszyfrowania bo szyfr jest o tyle prosty, że to kwestia zamiany 1 znaku na 5 innych. Jednak przy deszyfrowaniu trzeba już sprawdzić 5 znaków zależnie od szyfrowanej litery.
Awatar użytkownika
beluosus
Zakręcona Traszka
Zakręcona Traszka
Posty: 695
Rejestracja: 01 paź 2006, 15:32
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: Xfce
Architektura: x86
Kontakt:

Re: Java, szyfr bacona (implementacja)

Post autor: beluosus »

Np:

Kod: Zaznacz cały

    String[] a = jTextFieldX.getText().split("\\s");
    String wynik = "";
    for (String s : a)
    {
        if (s.equals("aaaaa")) wynik += 'A';
        else if (s.equals("aaaab")) wynik += 'B';
    }
Albo (ale tutaj wymagany jest zapis szyfru w formacie 5 znaków + spacja):

Kod: Zaznacz cały

for (int i = 0; i < s.length(); i += 6)
    {
        if (s.substring(i, i + 5).equals("aaaaa")) wynik += 'A';
        else if (s.substring(i, i + 5).equals("aaaab")) wynik += 'B';
    }
Jeśli używasz javy 1.7 to w pierwszym przykładzie można zastosować switch na Stringach, co zresztą proponuję zrobić w Twojej funkcji szyfrującej:

Kod: Zaznacz cały

    for (char c : jTextFieldX.getText().toCharArray())
    {
        switch (c)
        {
        case 'A': wynik += "aaaaa"; break;
        case 'B': wynik += "aaaab"; break;
        }
        wynik += " ";
    }
Na pewno lepiej zrobić klasę, która się tym zajmie. Być może lepszym rozwiązaniem - na pewno bardziej OO - byłoby użycie Map<>.
ODPOWIEDZ

Wróć do „Programowanie”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 2 gości