📄 ekeygen.java
字号:
/*
* ElGamal Signature Sample
* login name: gz847
* @author Ge ZHANG (2937207)
* @version 1.00 07/08/11*/
import java.math.BigInteger;
import java.security.*;
public class Ekeygen {
static ElGamalSignature esign;
static ElGamalEncryption encrypt;
static ElGamalKeyPairGenerator ekpg;
static KeyPair epair;
public static void main(String[] args){
ElGamalPrivateKey eprik;
ElGamalPublicKey epubk;
ekpg = new ElGamalKeyPairGenerator();
ekpg.initialize(16, new SecureRandom());
epair = ekpg.generateKeyPair();
eprik = (ElGamalPrivateKey) epair.getPrivate();
epubk = (ElGamalPublicKey) epair.getPublic();
System.out.println("Private Key: k = " + eprik.getK() + ", g = " + eprik.getG() + ", p = " + eprik.getP());
System.out.println("Public Key: y = " + epubk.getY() + ", g = " + epubk.getG() + ", p = " + epubk.getP());
try
{
esign = new ElGamalSignature();
esign.engineInitSign(eprik);
String str = "12345";
String hash_str = MD5.md5(str);
System.out.println("Message : " + str);
esign.engineUpdate(hash_str.getBytes(), 0, hash_str.length());
byte[] signedb = esign.engineSign();
System.out.println("Signed Message : " + new BigInteger(signedb));
encrypt = new ElGamalEncryption();
encrypt.engineInitEncrypt(epubk);
BigInteger msg_num = new BigInteger(str);
BigInteger[] encryptedmsg = encrypt.engineEncrypt(msg_num);
System.out.println("Encrpyted Message: " + encryptedmsg[0] + "," + encryptedmsg[1]);
BigInteger C;
encrypt.engineInitDecrypt(eprik);
C = encrypt.engineDecrypt(encryptedmsg);
System.out.println("Decrypted Message: " + C);
String hash_decrypt_str = MD5.md5(C.toString());
System.out.println("Hashed decrypted message: "+ hash_decrypt_str);
esign.engineInitVerify(epubk);
esign.engineUpdate(hash_decrypt_str.getBytes(), 0, hash_decrypt_str.length());
boolean veri = esign.engineVerify(signedb);
if(veri)
System.out.println("Verification Succeeded!");
else
System.out.println("Verification Failed!");
}
catch(InvalidKeyException ike)
{
System.out.println("Invalid Key!");
}
catch(SignatureException s)
{
System.out.println("Signature Error Occured!");
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -