package de.tutorials;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.Signature;
public class Schluessel {
private PublicKey publicKey;
private PrivateKey privateKey;
public Schluessel() throws Exception {
KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA");
keyPairGenerator.initialize(512);
KeyPair keyPair = keyPairGenerator.generateKeyPair();
publicKey = keyPair.getPublic();
privateKey = keyPair.getPrivate();
}
public byte[] createSignature(String meinText) throws Exception {
Signature signature = Signature.getInstance("MD5WithRSA");
signature.initSign(privateKey);
signature.update(meinText.getBytes("UTF8"));
return signature.sign();
}
public boolean verify(String meinText, byte[] signatur) throws Exception {
Signature sig = Signature.getInstance("MD5WithRSA");
sig.initVerify(publicKey);
sig.update(meinText.getBytes("UTF8"));
return sig.verify(signatur);
}
private void run() {
try {
String textZumSignieren = "Dieser Text darf nicht verändert werden";
// Signatur erstellen;
byte[] mySignature = createSignature(textZumSignieren);
if (verify(textZumSignieren, mySignature))
System.out.println("Text ist unverändert!");
else
System.out.println("ACHTUNG: Text wurde verändert!");
textZumSignieren = "neuer Text!";
if (verify(textZumSignieren, mySignature))
System.out.println("Text ist unverändert!");
else
System.out.println("ACHTUNG: Text wurde verändert!");
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) throws Exception {
new Schluessel().run();
}
}