精华内容
下载资源
问答
  • ElGamal数字签名

    2021-04-19 16:54:42
    ElGamal数字签名

    ElGamal数字签名

    ElGamal数字签名方案使用私钥加密,公钥解密。

    ElGamal数字签名方案的基本元素是素数q和a,其中a是q的原根。用户A通过以下步骤产生公钥/私钥对:

    1. 生成随机整数x,使得 1<x<q-1
    2. 计算y=a^x mod q
    3. A的私钥是x,公钥是{q,a,y}

    要对消息M签名,用户A首先计算哈希值m=H(M),这里m是一个满足0<=m<=q-1的整数,然后A通过下列步骤产生数字签名:

    1. 选择一个随机整数k,使得1<=k<=q-1,并且gcb(k,q-1)=1,即k与q-1互素
    2. 计算s1=a^k mod q 
    3. 计算k^(-1) mod (q-1) 即 计算k模q-1的逆
    4. 计算s2=k^(-1)(m-xs1)mod(q-1)
    5. 签名包括(s1,s2)对

    任意用户B都能通过如下步骤验证签名:

    1. 计算v1=a^m mod q
    2. 计算 v2=(y^s1)(s1^s2) mod q
    3. 如果v1=v2,则签名合法

    举例如下:

    下图是10 (mod 19)的整数幂(其中a是10)

    可以理解为

     

    知道此处取a=10,q=19

    假设Alice想用哈希值m=14来对消息进行签名:

    1. 选择x=16
    2. 计算y=a^x mod q = 10^16 mod 19 =4 (可查看上图查找)
    3. Alice的私钥为16,公钥为{q,a,y}={19,10,4}

    假设Alice想用哈希值m=14对消息进行签名:

    1. Alice选择k=5,因为gcb(5,18)=1(并且,k的选择要在1-18间)
    2. s1=a^k mod q = 10^5 mod 19 = 3
    3. k^(-1) mod (q-1) =5^(-1) mod 18 =11  (分数模运算)
    4. s2=k^(-1)(m-xs1)mod(q-1) =( (k^(-1) mod (q-1) ) ((m-xs1) mod (q-1)) ) mod (q-1) = 11 x2  mod 18 =4

    Bob可以对签名进行验证

    1. v1=a^m mod q = 10 ^14  mod  19 = 16
    2. v2=(y^s1)(s1^s2) mod q  =(4^3) (3^4) mod 19 = 5184 mod 19 =16
    3. 因此签名有效

     

     

     

     

     

     

     

     

     

     

     

    展开全文
  • Elgamal数字签名

    2015-10-07 14:13:42
    Elgamal数字签名的JAVA代码,比较简单,希望有用
  • elgamal数字签名

    千次阅读 2018-11-25 09:34:00
    elgamal公钥密码算法可用来实现加密以及数字签名。其中数字签名算法原理如下: 1. 秘钥产生:Alice选择大素数p,本原根g,选择一个秘密整数1&lt;&lt;x&lt;&lt;p-2,计算y=g^xmod p,公钥为(p,g,y),...

    elgamal公钥密码算法可用来实现加密以及数字签名。其中数字签名算法原理如下:

    1. 秘钥产生:Alice选择大素数p,本原根g,选择一个秘密整数1<<x<<p-2,计算y=g^xmod p,公钥为(p,g,y),私钥为x

    2.数字签名:Alice签名消息m,(m一般为信息的hash值),选择一个安全的随机数k,使得gcd(k,p-1)=1

    计算r=g^k(modp)

    计算s=k-1(m-xr)(modp-1)

    Alice签署的消息是三元组(m,r,s)

    3. 验证:bob验证签名

    下载Alice的公钥(p,g,y);计算V1=(y^r)r^smodp;

    V2=g^m(mod p)

    当且仅当V1=V2modp 时签名有效

    展开全文
  • 主要为大家详细介绍了eclipse实现ElGamal数字签名,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • Elgamal数字签名主要利用离散对数的特性来实现签名,具体方式如下: 生成 随机选择 签名算法 验证算法
  • ElGamal数字签名优缺点

    2021-04-16 18:53:38
    密码学 ElGamal数字签名优缺点 Schnorr数字签名算法优缺点

    ElGamal数字签名优缺点

    该方案在技术上存在一些限制,从而可能导致一致的安全隐患, 如 : 会话密钥 k 不能暴露给任何人, 其值必须随机选取, 而且必须确保在签不同的信息时会话密钥没有重复使用过;必须避免选择到 “ 弱随机数”k如2或者 3 ; 必须避免产生 “ 弱签名” , 以防攻击者通过签名即可计算出签名者的私钥;为 了避免遭受代换攻击, 必须使用单向Ha s h函数等尽管该方案在实际应用中是简单可行的,但是随着社会对安全性要求的日益提高,已经不能充分地满足社会的需求

    Schnorr签名算法优缺点

    第一,Schnorr 签名算法有可证明安全性。在假设椭圆曲线离散对数问题难度的随机寓言(Random Oracle)模型,以及假设原像抗性(Preimage Resistance)和次原像抗性(Second Preimage Resistance)的通用群模型下,Schnorr 签名算法具备选择消息攻击下的强不可伪造性(Strong Unforgeability under Chosen Message Attack,SUF-CMA)。换言之,如果不知道 Schnorr 签名的私钥,即使有针对任意消息的有效 Schnorr 签名,也没法推导出其他有效 Schnorr 签名。而 ECDSA 签名算法的可证明安全性则依赖于更强的假设。

     

    第二,Schnorr 签名算法具有不可延展性(Non-malleability)。签名延展性的含义是,第三方在不知道私钥的情况下,能将针对某一公钥和消息的有效签名,改造成针对该公钥和信息的另一个有效签名。ECDSA 签名算法则有内在的可延展性,这是 BIP 62 和 BIP 146 针对的问题。

     

    第三,Schnorr 签名算法是线性的,使得多个合作方能生成对他们的公钥之和也有效的签名。这一特点对多重签名、批验证(Batch Verification)等应用非常重要,既能提高效率,也有助于保护隐私。而在 ECDSA 签名算法下,如无额外的见证数据,批验证相对逐个验证并无效率提升。

     

     

    展开全文
  • Elgamal数字签名原理

    万次阅读 2017-12-01 17:37:36
    Elgamal数字签名  Elgamal数字签名主要也是利用离散对数的特性来实现签名,具体方式如下: 1. 选择一个大素数P、一个本原元G、一个随机整数d,d属于[2,p-2]; 2. 生成β,β=G^d mod P; 3. 此时P、G、β就是公钥...

    Elgamal数字签名

             Elgamal数字签名主要也是利用离散对数的特性来实现签名,具体方式如下:

    1. 选择一个大素数P、一个本原元G、一个随机整数d,d属于[2,p-2];

    2. 生成β,β=G^d mod P;

    3. 此时P、G、β就是公钥,记作Kpub;

    4. Elgamal数字签名记作sig(x,k)=(r,s);  x是明文的摘要,k是临时私钥的随机值,记作Kpr,r,s是构成签名的两个整数;

    5. 签名生成: r=G^k mod P; s=(x-dr)k^-1 mod (p-1);

    6. 生成签名后,签名随明文一起发送给接收方;

    7. 接收者收到消息后计算 t=β^r · r^s mod P

    8. 验证:当t≡G^x modP 则该签名有效,数据未被篡改,反之则签名无效;

     

    举例:B发消息给A,对消息使用Elgamal数字签名

        1. B选择素数P=29、本原元G=2、随机整数d=12,临时私钥k=5, 明文的摘要x=26;

             2.公钥β=G^d mod P → β=4096 mod 29 → β=7

             3.B将公钥(P=29,G=2,β=7)发给A

             4.计算签名,

         r=G^k mod P → r=2^5 mod 29 → r=3

               s=(x-dr)k^-1 mod (p-1) → s=(26-36)·17 mod 28 → s=26

        5.计算签名后将r=3、s=26、x=26发送给A

        6.A收到消息后,验证签名:

          t=β^r · r^smod P → t=343 X 2541865828329 mod 29 → t=22

          t≡G^x mod P  t mod P =22, G^x mod P =67108864mod 29 =22

        7.验证成功。

    展开全文
  • 为此,在环签名理论、 Elgamal数字签名算法与PBFT算法的基础上,提出一种基于 Elgamal数字签名算法的环签名改进方案。对环签名算法进行正确性及匿名性分析,运用环签名方案改进PBFT算法的签名及验证过程,使用 ...
  • ElGamal数字签名

    2021-06-28 13:48:25
    ElGamal就是一种原理简单,应用广泛的数字签名方法,它的成功很大程度上取决于求解离散对数问题的困难。ElGamal的密钥和参数的产生过程如下: 它先选定一个足够大的素数P, 然后在比P小的正数中选取一个随机数g和...
  • 提出了一种实用的基于ElGamal数字签名和零知识证明的双向用户鉴别方案,通过随机数和在线的挑战一响应交互机制,保证了身份认证过程中身份认证请求信息的可靠性和有效性;同时利用智能卡技术充分保证了用户秘密信息...
  • ElGamal公钥密码算法及ElGamal数字签名方案实现

    万次阅读 多人点赞 2018-03-30 15:41:58
    它既可用于加密又可用于数字签名的公钥密码体制。 一、ElGamal公钥密码算法描述 1.选取一个大素数p,使离散对数问题在有限域GF(p)上是难解的,选取g∈Z是一个本原元。 2.随机选取整数x,1≤x≤p-2,计算y=g^x...
  • 求一个简单ElGamal数字签名,C或C++控制台程序代码就行, rsa数字签名也有的更好,谢谢大神,让我应付下密码学的算法设计。
  • ELGamal数字签名方案的实现 1. 问题描述 为简化问题,我们取p=19,g=2,私钥x=9,则公钥y=29 mod 19=18。消息m的ELGamal签名为(r,s),其中r=gk mod p,s=(h(m)-xr)k-1 mod (p-1) 2.基本要求  考虑p取大素数的情况...
  • 数据完整性算法_ElGamal数字签名方案

    千次阅读 2018-12-10 13:10:00
    ElGama数字签名方案是五种签名方案中的一种,我们知道ElGama加密方案是使用用户的公钥进行加密,使用用户的私钥进行解密。但ElGama数字签名方案是使用私钥进行加密,公钥进行解密。   ElGama方案遵循数字签名的...
  • c语言代码,自己写不出这么长的代码,手里有资源的可以发给我一下吗
  • FZU-1493-ElGamal数字签名-A^X=B(%C)求x

    千次阅读 2014-08-08 10:55:56
    求A^x=B(%C) x = i * m + j ( 0
  • ElGamal、Schnorr数字签名方案

    千次阅读 2018-07-11 08:54:59
    数字签名方案-ElGamal、Schnorr数字签名方案 数字签名简介 特征 它必须能验证签名者、签名日期和时间 它必须能够认证被签的消息内容 签名应能由第三方仲裁,以解决争执 因此数字签名具有认证功能 攻击和...
  • 【实验名称】数字签名ElGamal签名方案 【实验目的】 1、了解数字签名的过程,包括签名过程和认证过程; 2、掌握ElGamal签名方案。 【实验原理】 ElGamal公钥密码算法是在密码协议中有着重要应用的一类公钥...
  • ElGamal Signature(数字签名) 信息安全基础实习
  • 数字签名是公钥密码学发展过程中最重要的概念之一,产生和使用数字签名过程的一般模型如图所示 消息认证可以保护消息交换双方不受第三...数字签名的特征: 必须能验证签名者、签名日期和时间 必须能认证被签的消息
  • 使用Elgamal公钥密码系统实现数字签名的程序,程序很小巧。可以自动生成大素数,经测试无误。
  • ElGamal签名 加密

    2013-01-06 17:51:54
    ElGamal签名 加密C语言实现
  • 分析了 Li和 Yang提出的基于 ElGamal的有序多重数字签名方案 ,发现该方案无法抵抗内部成员的伪造攻击 .因此提出了一个密钥可更新的 ElGamal有序多重数字签名方案 .通过使用可信秘密分发中心SDC为各个签名者分发密钥...
  • Java实现ElGamal算法签名

    千次阅读 2018-06-20 23:09:10
    Elgamal.java package elgamal; import java.math.BigInteger; import java.lang.Math; import java.util.Random; import java.io.*; public class ElGamal { private static final BigIn...
  • 数字签名中的elgamal算法

    热门讨论 2011-05-09 18:28:55
    本压缩包中是用C编写的ELGAMAL加密算法
  • 数字签名的必要性 消息认证能够使通信双方对接收到的信息来源及完整性进行验证,防止第三方的攻击,然而却不能防止通信双方中的一方对另一方的欺诈。 这种欺诈有多种形式,例如通信双方(发送方A、接收方B)利用双方...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,463
精华内容 985
关键字:

elgamal数字签名