加密解密---------->ElGamal算法
2011-09-01 17:00
288 查看
ElGamal算法既能用于数据加密也能用于数字签名,其安全性依赖于计算有限域上离散对数这一难题。
密钥对产生办法。首先选择一个素数p,两个随机数, g 和x,g, x < p, 计算 y = g^x ( mod p ),则其公钥为 y, g 和p。私钥是x。g和p可由一组用户共享。
ElGamal用于数字签名。被签信息为M,首先选择一个随机数k, k与 p - 1互质,计算
a = g^k ( mod p )
再用扩展 Euclidean 算法对下面方程求解b:
M = xa + kb ( mod p - 1 )
签名就是( a, b )。随机数k须丢弃。
验证时要验证下式:
y^a * a^b ( mod p ) = g^M ( mod p )
同时一定要检验是否满足1<= a < p。否则签名容易伪造。
ElGamal用于加密。被加密信息为M,首先选择一个随机数k,k与 p - 1互质,计算
a = g^k ( mod p )
b = y^k M ( mod p )
( a, b )为密文,是明文的两倍长。解密时计算
M = b / a^x ( mod p )
ElGamal签名的安全性依赖于乘法群(IFp)* 上的离散对数计算。素数p必须足够大,且p-1至少包含一个大素数
因子以抵抗Pohlig & Hellman算法的攻击。M一般都应采用信息的HASH值(如SHA算法)。ElGamal的安全性主要依赖于p和g,若选取不当则签名容易伪造,应保证g对于p-1的大素数因子不可约。D.Bleichenbache“GeneratingElGamal Signatures Without Knowing the Secret Key”中提到了一些攻击方法和对策。ElGamal的一个不足之处是它的密文成倍扩张。
美国的DSS(Digital Signature Standard)的DSA(Digital Signature Algorithm)算法是经ElGamal算法演变而来。
密钥对产生办法。首先选择一个素数p,两个随机数, g 和x,g, x < p, 计算 y = g^x ( mod p ),则其公钥为 y, g 和p。私钥是x。g和p可由一组用户共享。
ElGamal用于数字签名。被签信息为M,首先选择一个随机数k, k与 p - 1互质,计算
a = g^k ( mod p )
再用扩展 Euclidean 算法对下面方程求解b:
M = xa + kb ( mod p - 1 )
签名就是( a, b )。随机数k须丢弃。
验证时要验证下式:
y^a * a^b ( mod p ) = g^M ( mod p )
同时一定要检验是否满足1<= a < p。否则签名容易伪造。
ElGamal用于加密。被加密信息为M,首先选择一个随机数k,k与 p - 1互质,计算
a = g^k ( mod p )
b = y^k M ( mod p )
( a, b )为密文,是明文的两倍长。解密时计算
M = b / a^x ( mod p )
ElGamal签名的安全性依赖于乘法群(IFp)* 上的离散对数计算。素数p必须足够大,且p-1至少包含一个大素数
因子以抵抗Pohlig & Hellman算法的攻击。M一般都应采用信息的HASH值(如SHA算法)。ElGamal的安全性主要依赖于p和g,若选取不当则签名容易伪造,应保证g对于p-1的大素数因子不可约。D.Bleichenbache“GeneratingElGamal Signatures Without Knowing the Secret Key”中提到了一些攻击方法和对策。ElGamal的一个不足之处是它的密文成倍扩张。
美国的DSS(Digital Signature Standard)的DSA(Digital Signature Algorithm)算法是经ElGamal算法演变而来。
相关文章推荐
- 加密解密---------->MD5算法
- 加密解密---------->ASProtect的加密算法
- 非对称加密及数字签名RSA算法的实现(公钥加密->私钥解密、私钥加密->公钥解密)
- 【加密解密】 文件的加密解密 <含源代码>
- 加密解密---------->成功破解MD5
- 加密解密---------->用新的高级加密标准(AES)保持你的数据安全
- 加密解密---------->DSA算法
- 加密解密---------->DES算法
- AES加密解密->java实现
- 加密解密---------->RSA算法
- 【加密解密】对exe文件的加密解密 <含源代码》
- <转载>Java 加密解密基础
- javascript脚本加密&解密及HTML转JS
- <转载>Java 加密解密之对称加密算法AES
- 维吉尼亚(Vigenère)密码的加密和解密以及方阵(js版)
- %=&/?' 加密解密
- C++ <文本文件的加密与解密>
- javascript脚本加密&解密及HTML转JS
- SELECT INTO和INSERT INTO SELECT的区别 类似aaa?a=1&b=2&c=3&d=4,如何将问号以后的数据变为键值对 C# 获取一定区间的随即数 0、1两个值除随机数以外的取值方法(0、1两个值被取值的概率相等) C# MD5 加密,解密 C#中DataTable删除多条数据
- Android 视频&文件,加密 解密