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

1.加密过程

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

2.解密过程

(1)接收方收到的密文
(2)使用私钥和解密算法进行计算;
(3)得到明文

3.正确性

下面证明若严格按步骤执行算法,则接收者可以使用私钥和解密算法恢复明文。
因为

所以

又因为,故

得证。

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

ElGamal加密体制相关推荐

  1. merkle-hellman背包算法 java_浅析几种公钥密码体制-RSA;Merkle-Hellman、背包加密体制、ECC优缺点...

    自从公钥密码体制被提出以来,出现了许多公钥密码方案 如RSA.ELGamal密码体制.背包算法和ECC.XTR.NTRU等. 下面就介绍一下各种密码体制的优缺点,并进行比较. 2RSA 在Diffie ...

  2. 基于同态加密体制的安全多方计算

    本文首发公众号VenusBlockChain,关注公众号后可免费阅读!VenusBlockChain致力于区块链技术研究,传播区块链技术和解决方案.区块链应用落地.区块链行业动态等.有兴趣的小伙伴们, ...

  3. 【公钥密码】ECC椭圆密码体制 (实现Elgamal加密方法)

    CryptoAlgor 项目地址 (四个实验完整源码) 1. Github 项目地址         2. Gitee 项目地址 该项目的目录: 1.四个古典密码       /classcipher ...

  4. ElGamal加密、签名算法笔记

    2019独角兽企业重金招聘Python工程师标准>>> 注意:只是个人理解,可能有不正确的地方 ElGamal加密算法是一种非对称加密算法,基于Diffie-Hellman密钥交换算 ...

  5. elgamal签名算法c语言,ElGamal加密、签名算法笔记

    注意:只是我的理解,可能有不正确的地方算法 ElGamal加密算法是一种非对称加密算法,基于Diffie-Hellman密钥交换算法,由Taher Elgamal在1985年提出.安全 ElGamal ...

  6. ELGAmal加密与解密

    实验目的 熟悉EIGamal加解密算法的构造和运行过程,加深离散对数问题的理解. 二. 实验原理 读取消息M 使用serializeMsg函数转化消息M serializeMsg函数的运行结果是将明文 ...

  7. 现代密码学期末复习总结(个人整理自存)

    写在前面: 以下材料均为个人从互联网各处整理而成,不保证所含信息完全正确,考点基于个人学校答疑课和相关考试资料总结,不保证考点和您的实际考点相吻合. 仅供学习分享,如需转载还请私信告知. word版文 ...

  8. 2015上半年系统集成项目管理工程师(上午+下午)真题解析

    上午试题 1.信息化是人类社会发展的一个高级进程,它的目标是( ). A.建设基于现代信息技术的先进社会生产工具        B.创建信息时代的社会生产力 C.推动社会生产关系及社会上层建筑的改革 ...

  9. 用c语言elgamal共密钥密码加密算法,非对称密钥体制RSA加密原理

    一.非对称密钥加密概述 前面讲述了对称密钥加密体制.使用对称密钥加密体制进行保密通信时,任意不同的两个用户之间都应该使用互不相同的密钥.这样,如果一个网络中有n个用户,他们之间彼此都可能进行秘密通信, ...

最新文章

  1. 2018-3-22论文一种新型的智能算法--狼群算法(笔记三)算法的步骤+收敛性分析
  2. 膨胀腐蚀操作(MATLAB)
  3. 文档过期打不开怎么办_网络上下载文档,常见的3个问题,一招教你快速解决!...
  4. sql 中使用 where 1=1 和 where 1=0的作用
  5. 从 Alpha 到 Beta,这次是 New mPaaS
  6. 浅谈vue $mount()
  7. 博文视点图书市场快讯 第46期
  8. centos安装cmake
  9. i2c驱动之at24c08(1)
  10. 推荐好用的两个搜索下载书籍网站
  11. 阳线双响炮K线形态,上升势不可挡,送指标源码
  12. Web前端零基础入门HTML5+CSS3基础教程——了解前端
  13. python除数为0报错_python——异常
  14. Android部分手机报 解析包时出现问题 原因与解决方法
  15. 鸿蒙os系统测评,鸿蒙OS 2首批评价出炉,看已升级用户都怎么说的
  16. arcmap fishnet 经纬度
  17. 【Pytorch】复现FCN for Left Ventricle(LV) segmentation记录
  18. 为什么我中签的不是股票,都是转债?
  19. linux5.8下dns,Redhat 5.8 操作系统上DNS详细配置(DNS resolution for SCAN VIPs)
  20. leetcode——回溯法基础

热门文章

  1. 前端css让div浮动,Web前端篇:css浮动
  2. Java对接海康摄像头坑点总结
  3. c语言strcat()/strcat_s()函数详解
  4. android手机到iphone6s,iPhone6s相当于现在什么档次的安卓手机?结果让国产手机品牌汗颜...
  5. 验证证书链 java_java实现证书链和签名验证
  6. 讲python讲得好的评价_分析20万条弹幕告诉你,8.9分的高分剧《隐秘的角落》到底好看在哪儿?...
  7. Undetected
  8. 如何将本地代码推送至github
  9. 实验6、灰盒测试实验
  10. 提升网站黏着度的技术手段其实跟“搞对象”完全一样,也有“潜规则”