【发布时间】:2012-08-25 22:37:10
【问题描述】:
是否有一个简单的ElGamal椭圆曲线密码系统实现(使用Java BigInteger),具有密钥生成、加密和解密功能;可以用来给大学生讲课吗?
例如,Paillier 加密函数可以在不失一般性的情况下编码为:
public BigInteger encrypt(BigInteger input) throws PaillierException {
if(!isInZN(input)) {
throw new PaillierException(PaillierException.TYPE_PLAINTEXT_NOT_IN_ZN, input);
}
BigInteger plaintext = handleNegative(input);
BigInteger r = randomInZStarN();
return (((n.multiply(plaintext).add(BigInteger.ONE)).multiply(r.modPow(n, nSquared)))).mod(nSquared);
}
其中包含一个优化g=(1+n),使得密文c = (1 + mn) r^n mod n^2。
请不要建议 Java 7 原生实现或 BouncyCastle 实现,因为我不需要真实世界的符合 JCA 的复杂实现。
谢谢。
【问题讨论】:
标签: java cryptography elliptic-curve elgamal