精华内容
下载资源
问答
  • ElGamal加密

    2020-08-02 13:51:27
    ElGamal加密是由Taher ElGamal创造的,更常用的名称是ElGamal加密系统。这里需要介绍的三个方面的内容:ElGamal密钥生成、ElGamal加密和ElGamal解密。 1.ElGamal密钥生成 这包括如下步骤: (1)选择一个较大的质数...

    ElGamal加密是由Taher ElGamal创造的,更常用的名称是ElGamal加密系统。这里需要介绍的三个方面的内容:ElGamal密钥生成、ElGamal加密和ElGamal解密。

    1.ElGamal密钥生成

    这包括如下步骤:
    (1)选择一个较大的质数,称为P。这是加密密钥或公钥的第一部分。
    (2)选择解密密钥或者私钥D。
    (3)选择加密密钥或者公钥的第二部分E1。
    (4)加密密钥或公钥的第三部分E2是这样计算所得的: E 2 = E 1 D m o d P E2=E1^Dmod P E2=E1DmodP
    (5)公钥为(E1,E2,P),私钥为D。

    2.ElGamal密钥加密

    这包括如下步骤:
    (1)选择一个随机整数R。
    (2)计算密文的第一部分 C 1 = E 1 R m o d P C1=E1^Rmod P C1=E1RmodP
    (3)计算密文的第二部分 C 2 = ( P T × E 2 R ) m o d P C2=(PT\times E2^R)mod P C2=(PT×E2R)modP,其中PT为明文。
    (4)最后的密文是(C1,C2)。

    3.ElGamal密钥解密

    这包括如下步骤:使用公式 P T = ( C 2 × ( C 1 D ) − 1 ) m o d P PT=(C2\times (C1^D)^{-1})mod P PT=(C2×(C1D)1)modP计算明文PT。

    展开全文
  • ElGamal加密算法是一个基于迪菲-赫尔曼密钥交换的非对称加密算法。这篇文章通过示例代码给大家介绍Python实现ElGamal加密算法的相关知识,感兴趣的朋友一起看看吧
  • Elgamal加密方案基本原理与加密协议

    千次阅读 2020-04-09 11:07:00
    一、Elgamal加密方案概述 Elgamal 加密方案最早由 Taher Elgamal 于 1985 年提出,它通常称为 Elgamal 加密 Elgamal 加密方案可以视为 DHKE 协议的扩展。 二、Elgamal加密的基本原理 三、Elgamal加密协议 四、例子...

    一、Elgamal加密方案概述

    Elgamal 加密方案最早由 Taher Elgamal 于 1985 年提出,它通常称为 Elgamal 加密 Elgamal 加密方案可以视为 DHKE 协议的扩展。

    二、Elgamal加密的基本原理

    三、Elgamal加密协议

    四、例子

    参考资料:《深入浅出密码学》–Christof Paar,Jan Pelzl

    展开全文
  • 从技术角度来说,由于ElGamal加密方案的明文空间与私钥空间不太"匹配",因此,我们需要将原始的ElGamal加密方案进行适当的"裁剪"以证明它的KDM安全性.更为重要的是,本文定义的新的函数族自然地包含一些不属于仿射函数族...
  • Elgamal 加密算法

    千次阅读 2020-03-17 23:36:02
    Elgamal 加密算法1、ElGamal算法简介2、ElGamal算法原理3、c语言代码实现4、测试结果 1、ElGamal算法简介 ElGamal算法是由Tather ElGamal在1985年提出的,它是一种基于离散对数难题的加密体系,与RAS算法一样,既能...

    1、ElGamal算法简介

    ElGamal算法是由Tather ElGamal在1985年提出的,它是一种基于离散对数难题的加密体系,与RAS算法一样,既能用于数据加密,也能用于数字签名。ElGamal算法是基于因数分解,而ElGamal算法是基于离散对数问题。与RSA算法相比,ElGamal算法哪怕是使用相同的私钥,对相同的明文进行加密,每次加密后得到的签名也各不相同,有效的防止了网络中可能出现的重放攻击。

    2、ElGamal算法原理

    1、ElGamal密钥生成
    (1)随机选择一个大素数p,且要求p-1有大素数因子。再选择一个模p的本原元α。将p和α公开。
    (2)随机选择一个整数d作为密钥,2≤d≤p-2 。
    (3)计算y=α^d mod p,取y为公钥。

    2、ElGamal加密
    (1)对于明文M加密,随机地选取一个整数k,2≤k≤p-2
    (2)C1=α^k mod p
    (3)C2=MY^k mod p
    (4)密文为(C1,C2)

    3、ElGamal解密
    由密文可得明文M,M=C2/C1^d mod p

    3、c语言代码实现

    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    
    int pow_mod(int a,int b,int p){
      int ans=1;
      int tmp=a%p;
      while(b){
        if(b&1)
          ans=ans*tmp%p;
        b>>=1;
        tmp=tmp*tmp%p;
      }
      return ans%p;
    }
    
    void elgamal_en(int m,int pub,int p,int g,int *c1,int *c2){
      int k=5;
      *c1=pow_mod(g,k,p);
      *c2=m*pow_mod(pub,k,p)%p;
    }
    int elgamal_de(int c1,int c2,int pri,int p,int g){
      int m;
      int c1_=pow_mod(c1,p-2,p);
      m=c2*pow_mod(c1_,pri,p)%p;
      return m;
    }
    int is_prime(int p){
      int i;
      for(i=2;i<=sqrt(p);i++){
        if(p%i==0)
          return 0;
      }
      return 1;
    }
    void main(){
      int p;//素数
      int g=2;
    
      do{
        printf("请输入一个素数:");
        scanf("%d",&p);
      }while(!is_prime(p));
      
      printf("输入用户A的私钥:");
      int pri;
      scanf("%d",&pri);
    
      int pub;
      pub=pow_mod(g,pri,p);
    
      printf("用户A的公钥为:%d\n",pub);
      
      printf("输入明文(小于%d):",p);
      int m;
      scanf("%d",&m);
    
      int c1,c2;
      elgamal_en(m,pub,p,g,&c1,&c2);
      printf("用公钥加密后的密文为:c1=%d,c2=%d\n",c1,c2);
    
      int m_=elgamal_de(c1,c2,pri,p,g);
      printf("用私钥解密后的明文为:%d\n",m_);
    }
    

    代码参考 https://blog.csdn.net/Evil_invisible/article/details/101201632

    4、测试结果

    在这里插入图片描述

    展开全文
  • threshold_elgamal_python 用Python实现的阈值ElGamal加密
  • ElGamal加密体制

    千次阅读 2019-03-26 19:56:30
    ElGamal加密体制的公私密钥生成过程如下。 (1)随机选择一个满足安全要求的大素数p,并生成有限域。的一个生成元; (2)选一个随机数x(1<r<p-1),计算,则公钥为(y,g,p),私钥为x。 1.加密过程 与...

    ElGamal加密体制的公私密钥生成过程如下。
    (1)随机选择一个满足安全要求的大素数p,并生成有限域Z_{p}。的一个生成元g\in Z_{p}^{*}
    (2)选一个随机数x(1<r<p-1),计算y\equiv g^{x}(mod\quad p),则公钥为(y,g,p),私钥为x。

    1.加密过程

    与RSA密码体制相同,加密时首先将明文比特串分组,使得每个分组对应的十进制数小于p,即分组长度小于log_{2}p,然后对每个明文分组分别加密。具体过程分为如下几步:
    (1)得到接收方的公钥(y,g,p);
    (2)把消息m分组为长度为L(L<log_{2}p)的消息分组m=m_{1}m_{2}...m_{t}
    (3)对第i块消息(1≤i≤t)随机选择整数r_{i},1<r_{i}<p-1;
    (4)计算c_{i}\equiv g^{r_{i}}(mod \quad p),c_{i}^{'}\equiv m_{i}y^{r_{i}}(mod \quad p)(1\leq i\leq t)
    (5)将密文C=(c_{1},c_{1}^{'})(c_{2},c_{2}^{'})...(c_{t},c_{t}^{'})发送给接收方。

    2.解密过程

    (1)接收方收到的密文C=(c_{1},c_{1}^{'})(c_{2},c_{2}^{'})...(c_{t},c_{t}^{'})
    (2)使用私钥x和解密算法m_{i}\equiv (c_{i}^{'}/c_{i}^{x})(mod \quad p) \quad (1\leq i\leq t)进行计算;
    (3)得到明文m=m_{1}m_{2}...m_{t}

    3.正确性

    下面证明若严格按步骤执行算法,则接收者可以使用私钥和解密算法恢复明文。
    因为
    y\equiv g^{x}(mod\quad p)c_{i}\equiv g^{r_{i}}(mod \quad p),c_{i}^{'}\equiv m_{i}y^{r_{i}}(mod \quad p)

    所以
    (c_{i}^{'}/c_{i}^{x})\equiv (m_{i}y^{r_{i}}/g^{xr_{i}})\equiv (m_{i}g^{xr_{i}}/g^{xr_{i}})\equiv m_{i}(mod \quad p)
    又因为m_{i}< p,故
    (c_{i}^{'}/c_{i}^{x})mod \quad p=m_{i}

    得证。

    ElGamal加密过程需要两次模指数运算和一次模乘积运算,解密过程需要模指数运算,求逆运算和模乘积运算各一次。每次加密运算需要选择一个随机数,所以密文既依赖于明文,又依赖于选择的随机数,故对于同一个明文,不同的时刻生成的密文不同。另外,El-Gamal加密使得消息扩展了两倍,即密文的长度是对应明文长度的两倍。

    展开全文
  • 云环境下基于模糊关键词搜索的ElGamal加密
  • gmp实现elgamal加密

    2017-11-29 22:04:58
    用gmp大整数库实现简单的elgamal加密,求生成元的方法利用了拉格朗日定理,直接上代码 #include #include #include const char *start=...
  • ElGamal加密方案 ElGamal加密方案是基于离散对数问题的公钥加密方案。其加密运算是随机的,即同一明文在相同密钥加密下,所得到的密文是不一样的。 离散对数问题 实例:对于乘法群G,其中一个n阶元素alpha,有...
  • ElGamal加密算法可以定义在任何循环群G上。它的安全性取决于G上的离散对数难题。使用Python实现ElGamal加密算法,完成加密解密过程,明文使用的是125位数字(1000比特)。代码如下:import ra...
  • 精英示范 这是一个小应用程序,用于了解Elgamal加密的工作原理。 实时示例: :
  • Python实现ElGamal加密算法

    千次阅读 2020-06-17 14:44:46
    使用Python实现ElGamal加密算法,完成加密解密过程,明文使用的是125位数字(1000比特)。 代码如下: import random from math import pow a = random.randint(2, 10) #产生小于p的随机常数a def gcd(a, b): if...
  • 文章目录前言离散对数问题ElGamal加密算法算法描述密钥生成加密算法解密算法椭圆曲线群上的ElGamal加密密钥生成加密算法解密算法优势点压缩离散对数问题的困难性穷举搜索法Shanks算法BSGS原理算法描述Pohlig-Hellman...
  • ElGamal加密算法的理解

    千次阅读 2020-05-08 10:48:12
    原理:求解离散对数是困难的,而其逆运算可以应用平方乘的方法有效的计算出来。...ElGamal加密算法三部分: 密钥生成、加密、解密 密钥生成 利用生成元g产生一个q阶循环群G 从{1,…q-1}中随机选择一个x h=gx ...
  • DH协议及ElGamal加密方案的实现背景知识2020网鼎杯-青龙组-you raise me up关于求欧拉函数第一种情况第二种情况第三种情况第四种情况第五种情况DLP解题脚本DH协议DH协议的实现中间人攻击ElGamal加密方案求原根的有效...
  • ElGamal加密原理和代码实例

    千次阅读 2019-03-26 21:27:17
    具体原理和证明过程参见ElGamal加密体制,看个例子: 假设发送方为A,接收方为B,B选择素数p=13171,生成元g=2,私钥x=23。A欲用EIGamal算法将消息m=nupt加密为密文C后传送给B。消息m按英文字母表a=00,b=01,…,z...
  • 关于DH密钥分配方案以及Elgamal加密方案原理详解
  • ElGamal加密算法简介

    千次阅读 2020-12-28 17:07:42
    上一篇介绍了非对称加密算法中的RSARSA算法简介,这次看一下ElGamal算法。 首先它是一个基于迪菲-赫尔曼密钥交换的非对称加密算法。它在1985年由塔希尔·盖莫尔提出。它可以定义在任何循环群G上。它的安全性取决于G...
  • ElGamal算法是由Tather ElGamal在1985年提出的,它是一种基于离散对数难题的加密体系,与RAS算法一样,既能用于数据加密,也能用于数字签名。ElGamal算法是基于因数分解,而ElGamal算法是基于离散对数问题。与RSA...
  • ElGamal加密 对于明文M加密 随机地选取一个整数k,2≤k≤p-2。 C1=α^k mod p; C2=MY^k mod p; 密文为(C1,C2) ElGamal解密 由密文可得明文M M=C2/C1^d mod p 实例 密钥生成选取素数p=150001,本原元a=7,密钥...
  • 注意:只是我的理解,可能有不正确的地方算法ElGamal加密算法是一种非对称加密算法,基于Diffie-Hellman密钥交换算法,由Taher Elgamal在1985年提出。安全ElGamal加密算法能够应用在任意一个循环群(cyclic group)上...
  • 加法同态加密演示 操作环境 x64 Windows + Visual Studio Linux + GCC,c 这个怎么运作 获取文件。 md work git clone git@github.com:herumi/xbyak.git git clone git@github.com:herumi/cybozulib.git git clone...
  • 基于GMP的Elgamal加密

    2018-01-08 23:20:02
    //elgamal加密 gmp_printf( "密文:\n(%Zd,\n%Zd)\n\n" ,C1,C2); elgamal_decrypt(C1,C2); //elgamal解密 cout "解密后的明文:" ; gmp_printf( "%Zd\n" ,result); mpz_clears(q,p,a); return 0 ; }
  • 1.新建一个java项目,里面新建一个java类,加入要用到的jar包,整体的框架如图所示: 2.ElGamal.java里面的代码如下所示:import java.security.AlgorithmParameterGenerator;import java.security.Algorithm...
  • ElGamal 加密(利用Gmp计算)

    千次阅读 2017-11-23 21:11:17
    公钥密码体制是近现代的一个伟大发明... 以下部分将介绍公钥密码中的ElGamal密码体制,并有C语言函数实现。ElGamal密码体制1984年,ElGamal提出了一种基于离散对数的公开密钥体制,他的密钥产生基于一个公开的素数,利

空空如也

空空如也

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

elgamal加密