1 / 3
文档名称:

Elgamal算法.doc

格式:doc   大小:25KB   页数:3页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

Elgamal算法.doc

上传人:1542605778 2022/4/17 文件大小:25 KB

下载得到文件列表

Elgamal算法.doc

文档介绍

文档介绍:Elgamal算法
ElGamal算法,是一种较为常见的加密算法,它是基于1984年提出的公钥密码体制和椭圆曲线加密体系
一.ElGamal算法定义:
ElGamal算法,是一种较为常见的加密算法,它是基于1984年提出的公钥密码体制Elgamal算法
ElGamal算法,是一种较为常见的加密算法,它是基于1984年提出的公钥密码体制和椭圆曲线加密体系
一.ElGamal算法定义:
ElGamal算法,是一种较为常见的加密算法,它是基于1984年提出的公钥密码体制和椭圆曲线加密体系。既能用于数据加密也能用于数字签名,其安全性依赖于计算有限域上离散对数这一难题。在加密过程中,生成的密文长度是明文的两倍,且每次加密后都会在密文中生成一个随机数K。
二.密钥产生方法
密钥对产生办法。首先选择一个素数p,获取一个素数p的一个原根g(若g模p的阶等于φ(m),则称a为模m的一个原根。(其中φ(m)表示m的欧拉函数)) 和一个随机数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的大素数因子不可约。
三.一般的ElGamal数字签名方案
在系统中有两个用户A和B,A要发送消息到B,并对发送的消息进行签名。B收到A发送的消息和签名后进行验证。

选取一个大的素数p,g是GF(p)的本原元。h:GF(p)→GF(p),是一个单向Hash函数。系统将参数p、g和h存放于公用的文件中,在系统中的每一个用户都可以从公开的文件中获得上述参数。

假定用户A要向B发送消息m [1,p-1],并对消息m签字。第一步:用户A选取一个x [1,p-1]作为秘密密钥,计算y