📄 elgamalprivatekey.java
字号:
package abchr.crypto;
import java.io.Serializable;
import java.math.BigInteger;
import java.util.Random;
public class ElGamalPrivateKey implements Serializable {
private final BigInteger modulus;
private final BigInteger generator;
private final BigInteger publicKey;
private final BigInteger privateKey;
public BigInteger getGenerator(){return generator;}
public BigInteger getModulus(){return modulus;}
public BigInteger getPrivateKey(){return privateKey;}
public BigInteger getPublicKey(){return publicKey;}
private ElGamalPrivateKey(BigInteger modulus,BigInteger generator,BigInteger privateKey,BigInteger publicKey) {
this.generator=generator;
this.modulus=modulus;
this.privateKey=privateKey;
this.publicKey=publicKey;
}
public ElGamalPublicKey makePublicKey() {
return new ElGamalPublicKey(modulus,generator,publicKey);
}
public static ElGamalPrivateKey makeKey() {
Random random=new Random();
BigInteger modulus=BigInteger.probablePrime(1024,random);
BigInteger generator;
do {
generator=new BigInteger(modulus.bitLength(),random);
} while(generator.compareTo(BigInteger.ONE)<=0 || generator.compareTo(modulus)>=0);
BigInteger privateKey;
do {
privateKey=new BigInteger(modulus.bitLength(),random);
} while(privateKey.compareTo(BigInteger.ONE)<=0 || privateKey.compareTo(modulus)>=0);
BigInteger publicKey=generator.modPow(privateKey,modulus);
return new ElGamalPrivateKey(modulus,generator,privateKey,publicKey);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -