idzik icon

Matura/2012/Szyfr

idzik | PRO | 10/02/16 03:19:07 PM UTC | 0 ⭐ | 282 👁️ | Never ⏰ | []
Java |

2.73 KB

|

None

|

0 👍

/

0 👎

import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.util.HashMap;
import java.util.Scanner;
public class Szyfr {
 
    public static String szyfruj(String jawny,String klucz,HashMap mapa){
        String tajny="";
            if (klucz.length()<jawny.length()){
            int j=0; // pierwsza litera z klucza do wstawienia
            for (int i = klucz.length()-1; i < jawny.length()-1; i++) {
                klucz=klucz+klucz.charAt(j);
                j=j+1;
            }
        }
        for (int i = 0; i < jawny.length(); i++) {
            int dlugosc=(int)jawny.charAt(i)+(int)mapa.get(""+klucz.charAt(i));
            if (dlugosc>90) dlugosc=dlugosc-26;
            tajny=tajny+(char)(dlugosc);
        }
        return tajny;
    }
    
    public static String deszyfruj(String szyfrogram,String klucz,HashMap mapa){
        String jawny="";
        if (klucz.length()<szyfrogram.length()){
            int j=0; // pierwsza litera z klucza do wstawienia
            for (int i = klucz.length()-1; i < szyfrogram.length()-1; i++) {
                klucz=klucz+klucz.charAt(j);
                j=j+1;
            }
        }
        for (int i = 0; i < szyfrogram.length(); i++) {
            int dlugosc=(int)szyfrogram.charAt(i)-(int)mapa.get(""+klucz.charAt(i));
            if (dlugosc<65) dlugosc=dlugosc+26;
            jawny=jawny+(char)(dlugosc);
        }
        return jawny;
    }
    
    public static void main(String[] args) throws FileNotFoundException {
        HashMap <String,Integer> mapa=new HashMap <String,Integer>();
        mapa.put("A", 1);mapa.put("B", 2);mapa.put("C", 3);mapa.put("D", 4);mapa.put("E", 5);mapa.put("F", 6);
        mapa.put("G", 7);mapa.put("H", 8);mapa.put("I", 9);mapa.put("J", 10);mapa.put("K", 11);mapa.put("L", 12);
        mapa.put("M", 13);mapa.put("N", 14);mapa.put("O", 15);mapa.put("P", 16);mapa.put("Q", 17);mapa.put("R", 18);
        mapa.put("S", 19);mapa.put("T", 20);mapa.put("U", 21);mapa.put("V", 22);mapa.put("W", 23);mapa.put("X", 24);
        mapa.put("Y", 25);mapa.put("Z", 26);
        // szyfrowanie
        File plika1=new File("tj.txt");
        File plika2=new File("klucze1.txt");
        File plika3=new File("wyniki4a.txt");
        PrintWriter zapisa=new PrintWriter(plika3);
        Scanner odczyta=new Scanner(plika1);
        Scanner odczytb=new Scanner(plika2);
        while(odczyta.hasNextLine() && odczytb.hasNextLine()){
            zapisa.println(szyfruj(odczyta.nextLine(),odczytb.nextLine(),mapa));
        }
        odczyta.close();
        odczytb.close();
        zapisa.close();
        
        //deszyfrowanie
        File plikb1=new File("sz.txt");
        File plikb2=new File("klucze2.txt");
        File plikb3=new File("wyniki4b.txt");
        PrintWriter zapisb=new PrintWriter(plikb3);
        Scanner odczytc=new Scanner(plikb1);
        Scanner odczytd=new Scanner(plikb2);
        while(odczytc.hasNextLine() && odczytd.hasNextLine()){
            zapisb.println(deszyfruj(odczytc.nextLine(),odczytd.nextLine(),mapa));
        }
        odczytc.close();
        odczytd.close();
        zapisb.close();
    }
 
}

Comments