ElGamal算法,是一种较为常见的加密算法,它是基于1985年提出的公钥密码体制和椭圆曲线加密体系。既能用于数据加密也能用于数字签名,其安全性依赖于计算有限域上离散对数这一难题。在加密过程中,生成的密文长度是明文的两倍,且每次加密后都会在密文中生成一个随机数K,在密码中主要应用离散对数问题的几个性质:求解离散对数(可能)是困难的,而其逆运算指数运算可以应用平方-乘的方法有效地计算。
import java.math.BigInteger; import java.util.Random; public class EIG { public static void main(String[] args) { } /* y=α^x(mod p),1≤x≤p-1 x=logαy,1≤y≤p-1 */ public BigInteger p, alpha, y; private BigInteger d; //private key public EIG() { do { p = BigInteger.probablePrime(100, new Random()); } while (p.subtract(BigInteger.ONE).divide(new BigInteger("2")).isProbablePrime(100)); do { alpha = new BigInteger(100, new Random()); } while (! isOrigin(alpha, p)); do { d = new BigInteger(100, new Random());
ElGamal算法java实现
于 2023-05-10 09:46:43 首次发布