[密码学] ElGamal加密算法与离散对数
文章目录
- 前言
- 离散对数问题
- ElGamal加密算法
- 算法描述
- 密钥生成
- 加密算法
- 解密算法
- 椭圆曲线群上的ElGamal加密
- 密钥生成
- 加密算法
- 解密算法
- 优势
- 点压缩
- 离散对数问题的困难性
- 穷举搜索法
- Shanks算法BSGS
- 原理
- 算法描述
- Pohlig-Hellman算法
- 原理
- 伪代码
- Pollard ρ算法
- 原理
- 伪代码
- 例子
- 指数计算算法
- 原理
- 例子
前言
ElGamal加密算法是由Taher ElGamal于198年提出的一种基于离散对数问题的公钥加密算法。是一种非确定性的加密算法,即每次加密会使用一个随机数,加密相同的明文时,不同的随机数可能会产生不同的密文。好的加密算法应该具有非确定性,可引入工作模式将算法转变成非确定性加密算法。
离散对数问题
给定乘法群(G,·),一个阶为n的元素α∈G(即αn=e)以及元素β∈<α>。计算唯一的整数a,0≤a≤n-1,满足**αa=β**,其中a称为β的离散对数以a为底的logβ。
ElGamal加密算法
算法描述
密钥生成
加密算法
解密算法
椭圆曲线群上的ElGamal加密
密钥生成
加密算法
解密算法
优势
①基于计算椭圆曲线上离散对数的困难性
②密钥短(160-bit)
③同一基域上选取不同的椭圆曲线
点压缩
表示明文或公钥参数的时候,用点表示,且点有一定规律。
横坐标相同的点,纵坐标互为相反数。
离散对数问题的困难性
穷举搜索法
在0≤a≤n-1之间去遍历a,看哪个a满足条件。
时间O(n),空间O(1)
Shanks算法BSGS
原理
算法描述
时间O(n0.5),空间O(n0.5)
所以群的阶应该足够大
Pohlig-Hellman算法
原理
伪代码
时间复杂度O(cq)
因此群的阶应该含有足够大的素因子
Pollard ρ算法
原理
伪代码
例子
所以群的阶应该足够大
指数计算算法
只适用于模p的群上
原理
例子
所以模p应该足够大,群中元素难以用少量素数表示
[密码学] ElGamal加密算法与离散对数相关推荐
- ElGamal加密算法|ElGamal签名算法|公钥密码|数字签名|密码学|信息安全
ElGamal加密算法 简单介绍 EIGamal密码是除了RSA密码之外最有代表性的公开密钥密码 EIGamal是建立在离散对数的困难问题上的一种公钥体制密码 密钥产生 选一个素数p,以及小于p的两个 ...
- Elgamal 加密算法
Elgamal 加密算法 1.ElGamal算法简介 2.ElGamal算法原理 3.c语言代码实现 4.测试结果 1.ElGamal算法简介 ElGamal算法是由Tather ElGamal在19 ...
- ElGamal加密算法简介
目录 简介 阶 本原元 算法流程 1.密钥生成 2.加密 3.解密 简介 上一篇介绍了非对称加密算法中的RSARSA算法简介,这次看一下ElGamal算法. 首先它是一个基于迪菲-赫尔曼密钥交换的非对 ...
- Elgamal加密算法原理及实现
目录 一.概述 二.知识准备 1.阶 2.本原元 三.算法流程 1.密钥生成 2.加密 3.解密 四.代码实现 一.概述 Rsa是基于大质数分解难题:而Elgamal是基于G上的离散对数难题 ElGa ...
- elgamal算法加解密C语言,详解ElGamal加密算法
ElGamal公钥密码体制是1984年斯坦福大学的Tather ElGamal提出的一种基于离散对数问题困难性的公钥体制.1985年,Tather ElGamal利用ElGamal公钥密码体制设计出E ...
- ELGamal 加密算法及Java实现
ElGamal算法,是一种较为常见的加密算法,它是基于1985年提出的公钥密码体制和椭圆曲线加密体系.既能用于数据加密也能用于数字签名,其安全性依赖于计算有限域上离散对数这一难题.在加密过程中,生成的 ...
- elgamal加密算法 java_JAVA加解密17-非对称加密算法-ElGamal算法
一.概述 1.ElGamal算法和ECC算法基于离散对数问题 2.这个是一个单向的过程.虽然密钥对构造简单,但是只是乙方向另外一方单向传送数据进行加解密,不能反向操作 3.这里只有"公钥加密 ...
- 密码学-常见加密算法逆向学习
加密算法分为多种形式,一种是单向散列算法,也叫做hash算法,该算法常用于数字签名与完整性检测,常见的散列算法有MD5,SHA,RIPE_MD,HAVAL,N_Hash这几种,另一种则是对称加密算法, ...
- 计算机密码学思路,密码学中加密算法的研究和实现
密码学是一门古老而深奥的学科,是研究计算机信息加密.解密及其变换的科学,是数学和计算机的交叉学科,也是一门新兴的学科[1].早在四千年前,古埃及人就开始使用密码来保密传递消息.两千多年前,罗马国王Ju ...
最新文章
- 20169212 2016-2017-2 《网络攻防实践》第四周学习总结
- 连接到kali linux服务器上的MySQL服务器错误
- React 18 Beta 来了
- linux gfs文件系统,Linux环境下使用GFS文件系统
- 系统分析员备考之经济管理篇(一)
- 工作总结-虚拟机参数
- cad详图怎么画_CAD的图框应该怎么画? - CAD自学网
- 经典论文-SqueezeNet论文及实践
- 【Python】实现B站MP4格式音频与视频合并,ffmpeg一个命令即可
- tbc新服务器没消息,魔兽世界怀旧服,官方再流出TBC消息,舅舅党再次爆料燃烧的远征...
- 程序员女友在京东被领导“潜规则”,竟然不回绝:表明非单身会影响绩效
- 2017年最新基于hexo搭建个人免费博客——从零开始
- CLOB、BLOB , CLOB与BLOB的区别
- 3com - 美国设备提供商
- S1000D数据模块类型中英文对照
- 07 数据库系统设计综合实验 实验报告
- 奥巴马演讲雷人文言文版
- Android 开机流程
- 网站推荐|DataCamp
- 京东宙斯杯应用大赛 推荐宝 刷票记录 有图有真相
热门文章
- linux复制文件命令cat ,Linux学习之四(复制移动文件命令cp等及查看文本命令cat等)2017-03-28...
- UpTime:供电、系统、网络、制冷——2020年数据中心宕机四大主因
- 2020年中国医疗数据中心市场规模及发展趋势预测分析
- DL之CNN:利用自定义DeepConvNet【7+1】算法对mnist数据集训练实现手写数字识别并预测(超过99%)
- TF之p2p:基于TF利用p2p模型部分代码实现提高图像的分辨率
- Dataset:数据集集合(CV方向数据集)-常见的计算机视觉图像数据集大集合包括表面缺陷检测数据集(持续更新)
- 成功解决AttributeError: type object 'scipy.interpolate.interpnd.array' has no attribute '__reduce_cython
- Py之argparse:Python库之argparse(命令行解析)简介、安装、使用方法之详细攻略
- Py:数据挖掘之对微信朋友圈好友的性别、区域、昵称、签名信息进行情感分析
- 7.2 TensorFlow笔记(基础篇): 生成TFRecords文件