[ Pobierz całość w formacie PDF ]
.initialize(512);KeyPair kp = gen.generateKeyPair();System.out.println("Oto klucz prywatny:"+kp.getPrivate());System.out.println("Oto klucz publiczny:"+kp.getPublic());} catch(Exception e){System.out.println(e);}}}// koniec public class KluczeAatwo zauważyć, że metody println() wyświetlą na ekranie kilka parametrów tj.p, q,g, x oraz y.Wartość x to właśnie klucz prywatny, wartość y to klucz publiczny,natomiast wartości p,q, g to parametry DSA obliczone wcześniej dla pakietu SUN dlaustawień rozmiaru klucza 512, 768 i 1024 (dla DSA możliwe są ustawienia rozmiaruklucza będącego wielokrotnością 64, dla RSA możliwe są ustawienia rozmiaru kluczabędącego wielokrotnością 8; w obu przypadkach wartość musi być większa niż 512).Obliczone wcześniej parametry znacznie przyspieszają proces generacji kluczy.Inicjowanie generatora kluczy może dodatkowo opierać się o zestaw bajtówpodanych przez użytkownika.Najczęściej użytkownik jest zmuszony do zapisaniatekstu, a dopiero pózniej generowany jest zestaw kluczy.Przykład tego typugeneracji kluczy ukazuje program Klucze2.java.Przykład 10.5://Klucze2.java:import java.security.*;import java.io.*;public class Klucze2 {10-18 Jacek Rumiński - Język JAVA Jacek Rumiński - Język JAVA  Rozdział 10Jacek Rumiński - Język JAVA Jacek Rumiński - Język JAVA public static void main(String args[]){try{KeyPairGenerator gen = KeyPairGenerator.getInstance("DSA");SecureRandom los = SecureRandom.getInstance("SHA1PRNG");System.out.println("Podaj przykladowy tekst:");String seed = (new BufferedReader(new InputStreamReader(System.in))).readLine();los.setSeed(seed.getBytes());gen.initialize(512, los);KeyPair kp = gen.generateKeyPair();System.out.println("Oto klucz prywatny:"+kp.getPrivate());System.out.println("Oto klucz publiczny:"+kp.getPublic());} catch(Exception e){System.out.println(e);}}}// koniec public class Klucze2W powyższym przykładzie program czeka na wprowadzenie tekstu wejściowego,który jest pózniej wykorzystany w wywołaniu generatora liczb losowych, a docelowow generatorze kluczy.Klucze są następnie wyświetlone na ekranie.Najczęściej parękluczy generuje się raz, i są one umieszczane w odpowiedniej bazie danych(keystore) dla potrzeb ich wielokrotnego użycia przy autoryzacji każdej wiadomości.Jak powiedziano wcześniej proste użycie skrótu nie gwarantuje zabezpieczeniaautentyczności wiadomości.Jedną z omówionych wcześniej metod było użyciedodatkowych, tajnych fraz.Innym rozwiązaniem w Javie jest zastosowanie kluczy dokodowania skrótów.Otrzymujemy w ten sposób podpis cyfrowy w Javie.Inicjowaniepodpisu cyfrowego w Javie jest więc niczym innym jak wywołaniem skrótu zkodowaniem kluczem prywatnym.Wywołanie obiektu klasy Signature (podpiscyfrowy) odbywa się podobnie jak to omawiano wcześniej, poprzez zastosowaniestatycznej metody getInstance() z podaniem typu algorytmu i ewentualnie dostawcy.Przykładowe wywołanie może mieć następujący charakter:Siignatturre podpiis = Siignatturre.gettIInsttance((""SHA1wiitthDSA""));;Signature podpis = Signature.getInstance("SHA1withDSA");S gna u e podp s = S gna u e ge ns ance SHA1w hDSASama nazwa algorytmu wskazuje na typ operacji: po pierwsze generacja skrótu zwykorzystaniem algorytmu SHA1 oraz wykorzystanie klucza DSA.Obiekt klasySignature posiada zawsze określony stan.Początkowo jest to stan bez inicjowania -UNINITIALIZED, a następnie możliwy jest jeden z dwóch stanów:podpisywanie - SIGN oraz weryfikacja VERIFY.W celu stworzenia podpisu należywprowadzić obiekt podpisu w stan SIGN za pomocą metody initSign(), np.:podpiis.iiniittSiign((kp.gettPrriivatte(())));;podpis.initSign(kp.getPrivate());podp s n S gn kp ge P va eMetoda initSign() wymaga więc jako atrybutu klucza prywatnego koniecznego dogeneracji podpisu [ Pobierz całość w formacie PDF ]
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • agnieszka90.opx.pl