elgamal加密算法例题
ElGamal公钥密码体制

ElGamal公钥密码体制1、问题描述设计ElGamal公钥密码体制算法。
2、算法设计(1)选取大素数p和p的一个原根a,(a,p)=1,1<a<p(2)随机选取整数d,1<d<p-1,计算b≡ad (mod p);p,a,b为公钥,d为私钥(3)加密:对0<m<p,秘密的随机选取整数k,1<k<p-1,加密后密文为c=(c1 ,c2 ),c1 ≡ak (mod p), c2 ≡ m bk (mod p)(4)解密:明文m ≡c2 ( c1 d) -1 (mod p)主要步骤3、算法分析该算法的基础是找到一个原根,大数的原根产生过程比较慢,本人目前也只能产生8位以内的素数的原根,还有待改进。
同时也涉及到模幂运算,选取的幂指数如果较大,时间复杂度也会相应的增加。
int inverse(int a,int m){long int c,d;int j;int q[100],r[100],t[100],s[100];c=a;d=m;r[0]=c;r[1]=d;s[0]=1;s[1]=0;t[0]=0;t[1]=1;for(j=1;r[j]!=0;j++){q[j]=(int)(r[j-1]/r[j]);r[j+1]=r[j-1]-q[j]*r[j];if(j>=2){s[j]=s[j-2]-q[j-1]*s[j-1];t[j]=t[j-2]-q[j-1]*t[j-1];}}return s[j-1];}int gcd(int a,int b){int c;if(a<b){c=b;b=a;a=c;}while(b!=0){c=b;b=a%b;a=c;}return a;}void main(){int p,g,k,s,x,r,t=1,i,j,f,y,m,M;cin>>p>>g>>k;s=2;for(i=1;i<=k;i++){t*=s;t=t%p;}while(t<0){t=t+p-1;}cout<<"public key is"<<"("<<t<<","<<g<<","<<p<<")"<<endl;cin>>r;if(gcd(p-1,r)!=1)cout<<"the data is not suitable"<<endl;x=1;for(j=1;j<=r;j++){x*=s;x=x%p;}cin>>m;f=inverse(r,p-1);y=(m-k*x)*f%(p-1);while(y<0){y=y+p-1;}cout<<"the signature is"<<"("<<x<<","<<y<<")"<<endl;for(i=1;i<=m;i++){g*=g;}g=g%p;for(i=1;i<x;i++){y*=y;}for(j=1;j<y;j++){x*=x;}M=x*y%p;if(M=p){cout<<"the signature is useful"<<endl;}else{cout<<"the signature is not useful"<<endl;}}运行结果。
ElGamal公钥密码体制及安全性

下面我们首先计算
γ
2,0
=α
0×(p-1)/2
mod 29
= 20 mod 29 = 1, γ
2,1
=α
1×(p-1)/2mod
29
= 228/2 mod 29
= 28. 因为 = 28 =γ
2,1 ,
0
ß mod 29 = 1828/2 mod 29
所以 a = 1.令
ß = ß α 1 因为
0, 1 e i 1
i
根据目前的计算能力,只有当p-1 的素因子是小素数时,才 能有效分解 p-1求得 。因此,Pohlig-Hellman 算法适用于p1 的素因子是小素数的情况。 例5.8 设p = 29, 则 p-1= 28 = 22×7.设α = 2, ß 18. = 求log 。令log a .
s ( p 1 ) qi
mod p
qi ,s
· ,k, · ·
s = 0, 1,2, ·· i -1. 将这些 q ·
ei i
排成一个
下面利用表L求 a mod q
a mod q
ei i
, i= 1,2,
1 i
· ,k. · ·
e i 1
设
q
ei 1 i
a a q a
0
ß=αd mod p,
所以
k c2(c1d)–1≡mß (α
dk
)
–1
(mod p)
–1(mod
≡mα
dk
(α
dk
)
p) α ∈zp*
≡m(mod p). 因此,解密变换能正确的从密文恢复相应的明文。
5.4.2. ElGamal公钥密码体制的安全性
网络安全-第16讲 数据加密技术(ELGAMAL和椭圆曲线)

①加解密速度快 由于实际应用时ELGamal密码运算的素数p比RSA 要小,所以ELGamal密码的加解密速度比RSA稍快。 ②随机数源 由ELGamal密码的解密钥d和随机数k都应是高质量 的随机数。因此,应用ELGamal密码需要一个好的随机 数源,也就是说能够快速地产生高质量的随机数。 ③大素数的选择 为了ELGamal密码的安全,p应为150位(十进制数) 以上的大素数,而且p-1应有大素因子。
三、椭圆曲线密码
G 3G 5G 7G 9G 11G 13G =(2,7), 2G =(5,2), =(8,3), 4G =(10,2), =(3,6), 6G =(7,9), =(7,2), 8G =(3,5), =(10,9),10G =(8,8), =(5,9), 12G =(2,4), =O( ∞,∞ )。
二、 ELGamal公钥密码
⑵ 加密 将明文消息M(0≤M≤p-1)加密成密文的过程如
下: ①随机地选取一个整数k,2≤k≤p-2。 ②计算: U =y k mod p; C1=α k mod p; C2=UM mod p; ③取 C=(C1 ,C2)作为的密文。
二、 ELGamal公钥密码
二、 ELGamal公钥密码
⑸ ELGamal密码的应用 由于ELGamal密码的安全性得到世界公认,
所以得到广泛的应用。著名的美国数字签 名标准DSS,采用了ELGamal密码的一种变 形。 为了适应不同的应用,人们在应用中总结 出18种不同的ELGamal密码的变形。
二、 ELGamal公钥密码
2、离散对数问题:
求对数 X 的运算为
x=logα y,1≤x≤p-1 由于上述运算是定义在模p有限域上的,所以称为 离散对数运算。 ③从x计算y是容易的。可是从y计算x就困难得多, 利用目前最好的算法,对于小心选择的p将至少 需用O(p ½)次以上的运算,只要p足够大,求解 离散对数问题是相当困难的。
ELGamal加密

Page 3
加密 将明文消息M(0≤M≤p-1)加密成密文的过程如下: ① 随机地选取一个整数x,1≤x≤p-2。 ② 计算: U =y x mod p; C1=α x mod p; C2=UM mod p; ③ 取 C=(C1 ,C2)作为密文。
Page 4
解密 将密文(C1 ,C2)解密的过程如下: ① 计算V=C1 d mod p; ② 计算M=C2 V -1 mod p。
Page 5
案例:Alice要发消息给Bob 1) 密钥生成. 选择公开参数:p=97 及本原元a=5 ; Bob 选择 秘密钥xB=58,计算并发布公钥 yB=558=44 mod 97. 2) Alice 要加密 M=3 给 Bob. 首先得到 Bob的公开密钥 yB=44,选择随机 d=36 计算 : U=4436 mod 97=75. 计算密文对: C1 = 536 mod 97 = 50 ; C2 = 75*3 mod 97 = 31. 发送 {50,31} 给Bob . 3) Bob 解密消息. 恢复消息密钥 V=5058 mod 97=75. Bob 计算 V-1 = 22 mod 97=22. Bob 恢复明文 M = 31*22 mod 97=3.
Page 8
ELGamal密码的应用 由于ELGamal密码的安全性得到世界公认,所以得到广泛 的应用。著名的美国数字签名标准DSS,采用了ELGamal密 码的一种变形。 为了适应不同的应用,人们在应用中总结出多种不同的 ELGamal密码的变形。
Page 9
Page 2
算法: 准备:随机地选择一个大素数p,且要求p-1有大素数因 子。再选择一个模p的本原元α ,将p和α 公开。 ⑴ 密钥生成 用户随机地选择一个整数d作为自己秘密的解密钥, 1≤d≤p-2 。 计算y=α d mod p,取y为自己的公开的加密钥。 ()
公钥密码1021

(a,b∈GF(p),4a3+27b2≠0 mod p)
• 我们感兴趣的是在第一象限的整数点。
• 设Ep(a,b)表示ECC上点集: {(x,y)|0≤x<p,0 ≤y<p,且x,y均为整数} 并上 O.
离散对数问题与 ElGamal算法
离散对数问题
给定一个素数p,z*p上的一个生成元g,
及一个元素y, 寻找整数x(0=<x=<p-2), 使得gx = ymod p。
离散对数问题
与离散对数问题密切相关的是Diffie-Hellman
问题(DHP),它对公钥密码是很重要的。
Diffie-Hellman问题:给定一个素数p,z*p上的 一个生成元g,给定ga mod p, gb mod p , 求gab mod p 。
签名
(1) Alice用H将消息m进行处理,得h=H(m)。 (2) Alice选择秘密随机数k,满足
0<k<p-1,且(k, p-1)=1, 计算
r=gk(modp);
s=(h-xr)k-1(mod (p-1))。
(3) Alice将(m,r,s)发送给Bob。
验证
接收方接收到消息m和签名(r,s)后: (1) 计算h=H(m)。 (2) 用Alice的公钥,检验是否
椭圆曲线公钥密码ECC
有限域上满足方程 y2+axy+by=x3+cx2+dx+e
的所有点P=(x, y),加上一个“无穷远点”,构成的 集合称为一个“椭圆曲线”。
不可区分性在公约密码学中的应用介绍

不可区分性在公钥密码学中的应用摘要:本文主要总结了不可区分性在公钥密码体制中的运用,这些运用主要包括如何刻画密码体制的安全性(语义安全性)、如何通过规约的方式利用不可区分实验证明密码体制的安全性、以及一些常见的密码体制中不可区分性的作用。
全文主要分为三个部分,第一部分主要介绍了一些基础知识,包括密码体制的组成以及完善保密密码体制的含义,如何利用不可区分性来等价描述完善保密密码体制。
第二部分主要介绍了不可区分实验(游戏)在公钥密码学中的应用。
这一部分先对攻击者的层次进行了划分,之后介绍了如何用不可区分实验来给最基本的密码体制的语义安全性下定义。
这一部分最后利用CCA2的语义安全性作为例子说明如何利用不可区分实验定义拥有特定防御功能的公钥密码体制的语义安全性。
第三部分介绍了规约证明的相关内容,规约证明现如今已成为现代公钥密码学可证明安全理论常用的证明方法,而两个问题规约的过程中与不可区分性密不可分。
第四部分主要举了一个例子来说明不可区分性在证明密码体制安全性中的应用。
本文对公钥密码学中的不可区分性理论做了比较简单的总结和归纳,不可区分性在公钥密码学可证明安全理论中有着十分重要的地位,本文对刚刚接触不可区分性的学者有着一定的帮助。
第一部分:基础知识及不可区分性的定义这一部分内容主要介绍一下有关于不可区分性的基础知识,包括密码体制的组成、完善保密密码体制、完美不可区分性的含义以及敌手不可区分性的含义。
首先先给出密码体制的定义:定义1.1 密码体制]1[一个密码体制由三个部分构成:密钥产生算法Gen、加密算法Enc、解密算法Dec。
他们的功能如下:(1)密钥产生算法Gen 是一个概率算法,能够根据方案定义的某种分布选择并输出一个密钥k .(2)加密算法Enc ,输入为密钥k 和明文m ,输出为密文c 。
把使用密钥k 加密明文m 记为Enc k (m ).(3)解密算法Dec ,输入为密钥k 和密文c ,输出为明文m 。
ELGamal算法

实例解析: p=19; a=13,d=10,a与d均小于 p,符合条件; y = 13^10(mod19)=6; 公钥:y=6 a=13 p=19 私钥:d=10
签名过程: 1.随机选取一个数k,1< k<p-1,且k和p-1互质 2、计算r,r满足:r≡a^k (mod p) 3、待签名信息为m, 计算s≡(m-dr)*(k^(1)) (mod p-1) (r,s)构成对m的签名
一个群被称为有限群,如果它有有限个元素。元素 的数阶叫做群 G 的阶 例如,模19下7的阶为3,[1, 7, 49, 343, 2401, 16807, 117649, 823543, 5764801...]={1,7,11,1,7,11,1,7,11...}这里的 1,7,11循环,实际只有3个元素
群是一个集合G,连同一个运算 "· ",它结合任何两个元素 a 和 b 而形成另一个元素,记为 a · b。符号 "· " 是对具体给出的运算,比如加 法的一般的占位符。要具备成为群的资格,这个集合和运算 (G, · ) 必须 满足叫做群公理的四个要求: 1.封闭性。 对于所有 G 中 a, b,运算 a · b 的结果也在G 中。 2.结合性。 对于所有 G 中的 a, b 和 c,等式 (a · b) · c = a · (b · c) 成立。 3.单位元。 存在 G 中的一个元素 e,使得对于所有 G 中的元素 a,等式 e · a = a · e = a 成立。 4.反元素。 对于每个 G 中的 a,存在 G 中的一个元素 b 使得 a · b = b · a = e, 这里的 e 是单位元。
elgamal密码例题

elgamal密码例题摘要:1.引言2.Elgamal加密算法的基本原理3.Elgamal加密算法的加密和解密过程4.Elgamal密码的例题解析5.总结正文:Elgamal密码是一种公钥加密算法,它是由Taher Elgamal在1985年提出的。
该算法基于离散对数问题,具有较高的安全性和强大的抗攻击性。
它广泛应用于网络通信、电子商务等领域。
下面,我们将通过一个例题来解析Elgamal密码的加密和解密过程。
假设Alice想给Bob发送一条加密信息,信息内容为“Hello, Bob!”。
首先,Alice需要从Bob那里获得公钥,通常是通过一个可信任的第三方机构获取。
Bob的公钥包括一个大的素数p、一个与p互质的整数x以及一个满足特定条件的y。
其中,p和x组成一个公钥对(pk),y则作为Bob的私钥。
有了Bob的公钥(pk),Alice就可以开始加密信息了。
加密过程如下:1.Alice随机选择一个整数k,范围在[1, p-1]之间,作为加密密钥。
2.将信息“Hello, Bob!”转换为ASCII编码的数字序列,例如“104 101 108 108 111 44 32 111 114 108 100”。
3.用k对信息中的每个数字进行加密,具体操作是将数字乘以k,然后对p取模。
得到加密后的数字序列。
4.将加密后的数字序列按照[1, p-1]的顺序排列,得到一个新的序列。
5.将新序列中的每个数字都替换为对应的x的k次幂,即x^k。
加密完成后,Alice将加密后的数字序列发送给Bob。
Bob收到信息后,使用自己的私钥y进行解密:1.Bob将收到的加密数字序列中的每个数字都替换为对应的x的-k次幂,即x^(-k)。
2.将解密后的数字序列转换回ASCII编码,得到解密后的信息。
通过这个例题,我们可以看到Elgamal密码的加密和解密过程。
值得注意的是,Elgamal密码的安全性依赖于离散对数问题的难解性。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
elgamal加密算法例题
【原创实用版】
目录
一、elgamal 加密算法概述
二、elgamal 加密算法原理
1.系统参数
2.密钥生成
3.加密过程
4.解密过程
三、elgamal 加密算法例题解答
1.题目描述
2.解题思路
3.计算过程
4.答案验证
四、elgamal 加密算法的安全性分析
五、elgamal 加密算法的应用领域
正文
一、elgamal 加密算法概述
ElGamal 加密算法是一种基于离散对数问题的非对称加密算法,由埃及数学家 ElGamal 于 1984 年提出。
该算法安全性高,适用于密钥交换和数字签名等场景。
与 Diffie-Hellman 密钥交换算法类似,ElGamal 加密算法也采用了非对称密钥和公开密钥的概念。
二、elgamal 加密算法原理
1.系统参数
ElGamal 加密算法的系统参数包括素数 p 和本原根 g。
素数 p 是加密算法中用于生成密钥和计算离散对数的基本数,本原根 g 是模 p 意义下的一个元素,满足 g^k ≡ 1 (mod p),其中 k 为正整数。
2.密钥生成
在 ElGamal 加密算法中,每个用户需要生成一对密钥,包括私钥 x 和公钥 y。
私钥 x 是一个在大素数 q 范围内的整数,满足 x ≡ a (mod q),其中 a 是本原根 g 在模 q 意义下的逆元。
公钥 y = g^x (mod p)。
3.加密过程
加密过程如下:
- 选择一个随机数 k,计算明文 m = k^x (mod p)。
- 计算密文 c1 = g^k (mod p) 和 c2 = m^k (mod p)。
- 将密文 c1 和 c2 发送给接收方。
4.解密过程
解密过程如下:
- 计算 c1 的逆元 c1^-1 (mod p),得到 c1^-1 = h (mod p),其
中 h = g^k (mod p)。
- 计算明文 m = c1^-1 * c2 (mod p)。
- 得到解密后的明文 m。
三、elgamal 加密算法例题解答
【例题】:已知素数 p=71,本原根 a=7,用户 A 的私钥 x=5。
求用户 B 的公钥 YB。
【解答】:根据私钥 x 和本原根 a,可以计算出 x 在模 q 意义下的逆元。
由于 q 是素数 p 的一个质因数,所以可以直接计算出 x 在模
p 意义下的逆元。
计算过程如下:
- 首先求出 a 在模 71 意义下的逆元,得到 a 的逆元为 49 (mod 71)。
- 计算 x 在模 71 意义下的逆元,得到 x 的逆元为 41 (mod 71)。
- 计算 YB = g^x (mod p),其中 g 为本原根 7,得到 YB = 7^41 (mod
71)。
四、elgamal 加密算法的安全性分析
ElGamal 加密算法的安全性基于离散对数问题的困难性。
目前,求解离散对数问题和计算其逆元都是非常困难的,因此 ElGamal 加密算法具有很高的安全性。