public void szyfrujPlik(BigInteger e, BigInteger n, String sciezkaDoPlikuOdczyt) { String sciezkaPlikZapis = "resource\\zaszyfrowany" + sciezkaDoPlikuOdczyt.substring(sciezkaDoPlikuOdczyt.indexOf('.')); PlikiOdczytZapis plikiOdczytZapis = new PlikiOdczytZapis(sciezkaDoPlikuOdczyt, sciezkaPlikZapis, false); byte[] zPliku = plikiOdczytZapis.odczyt((int) new File(sciezkaDoPlikuOdczyt).length()); int liczbaZnakow = n.bitLength() / 8; byte[] pomoc = new byte[liczbaZnakow]; byte[] wynik; int j = 0; for (int i = 0; i < zPliku.length; i++) { if (j < liczbaZnakow) { pomoc[j] = zPliku[i]; j++; } else { j = 0; i--; wynik = (szyfrujRSA(new BigInteger(pomoc), e, n).toString() + ' ').getBytes(); plikiOdczytZapis.zapis(wynik); if (zPliku.length - i > liczbaZnakow) { pomoc = new byte[liczbaZnakow]; } else { pomoc = new byte[zPliku.length % liczbaZnakow]; } } } wynik = (szyfrujRSA(new BigInteger(pomoc), e, n).toString()).getBytes(); plikiOdczytZapis.zapis(wynik); }
public void deszyfrujPlik(BigInteger d, BigInteger n, String sciezkaDoPlikuOdczyt) { String sciezkaPlikZapis = "resource\\odszyfrowany" + sciezkaDoPlikuOdczyt.substring(sciezkaDoPlikuOdczyt.indexOf('.')); PlikiOdczytZapis plikiOdczytZapis = new PlikiOdczytZapis(sciezkaDoPlikuOdczyt, sciezkaPlikZapis, false); byte[] zPliku = plikiOdczytZapis.odczyt((int) new File(sciezkaDoPlikuOdczyt).length()); String[] odczytane = new String(zPliku).split(" "); for (String o : odczytane) { BigInteger wynik = deszyfrujRSA(new BigInteger(o), d, n); plikiOdczytZapis.zapis(wynik.toByteArray()); } }
public void generujKlucze(int dlugoscKlucza, int liczbaLiczbPierwszych) { List<BigInteger> pierwszeLista = generujPierwsze(dlugoscKlucza, liczbaLiczbPierwszych); BigInteger n = modulRSA(pierwszeLista); // moduł RSA BigInteger euler = wartoscEulera(pierwszeLista); BigInteger e = liczbaWzgledniePierwsza(euler); // klucz publiczny BigInteger d = e.modInverse(euler); // klucz prywatny PlikiOdczytZapis plikiOdczytZapis = new PlikiOdczytZapis(null, "resource\\klucze\\klucze.txt", true); plikiOdczytZapis.zapis(("e: " + e.toString() + "\n").getBytes()); plikiOdczytZapis.zapis(("d: " + d.toString() + "\n").getBytes()); plikiOdczytZapis.zapis(("n: " + n.toString() + "\n").getBytes()); plikiOdczytZapis.zapis(("\n\n").getBytes()); System.out.println("e: " + e + "\nd: " + d + "\nn: " + n); }