密码学——elgama加解密及数字签名算法
一、背景
在密码学中,ElGamal加密算法是一个基于迪菲-赫尔曼密钥交换的非对称加密算法。它在1985年由塔希尔·盖莫尔提出。GnuPG和PGP等很多密码学系统中都应用到了ElGamal算法。
ElGamal加密算法可以定义在任何循环群G上。它的安全性基于离散对数难题
。
- elgama算法可分别用作加解密与数字签名。
二、加解密算法细节
2.1 公私钥产生算法(KeyGenKeyGenKeyGen):
- 随机选择一个满足安全要求的大素数ppp(通常1024bits),并生成有限域ZpZ_pZp的一个生成元g∈Zp∗g∈Z_p^*g∈Zp∗;
- 通常ppp产生方法:
- p=2x∗q+1p=2^x *q+1p=2x∗q+1,qqq为160bits大素数
- 随机选择一个随机数x(1<x<p−1)x(1<x<p-1)x(1<x<p−1),计算y≡gx(modp)y≡g^x (mod\ p)y≡gx(mod p),则公钥为(y,g,p)(y,g,p)(y,g,p),私钥为xxx。
2.2 加密过程(EncryptionEncryptionEncryption)
- 对消息mmm进行加密;
- 随机选择整数r(1<r<p−1)r(1<r<p-1)r(1<r<p−1);
- 计算密文C=(c,c′)C=(c, c^{'})C=(c,c′),其中:c≡gr(modp),c′≡myr(modp)c≡g^r (mod\ p), c^{'}≡my^r(mod\ p)c≡gr(mod p),c′≡myr(mod p)。
2.3 解密过程(DecryptionDecryptionDecryption)
- 收到密文C=(c,c′)C=(c, c^{'})C=(c,c′);
- 使用密钥xxx对密文CCC解密得到消息mmm,m=c′/cx=(myr)/(gx)r=(myr)/yr(modp)m= c^{'}/c^x =(my^r)/(g^x )^r =(my^r)/y^r (mod\ p)m=c′/cx=(myr)/(gx)r=(myr)/yr(mod p)。
三、数字签名算法
3.1 公私钥产生算法(KeyGenKeyGenKeyGen):
- 随机选择一个满足安全要求的大素数ppp(通常1024bits),并生成有限域ZpZ_pZp的一个生成元g∈Zp∗g∈Z_p^*g∈Zp∗;
- 通常ppp产生方法:
- p=2x∗q+1p=2^x *q+1p=2x∗q+1,qqq为160bits大素数
- 随机选择一个随机数x(1<x<p−1)x(1<x<p-1)x(1<x<p−1),计算y≡gx(modp)y≡g^x (mod\ p)y≡gx(mod p),则公钥为(y,g,p)(y,g,p)(y,g,p),私钥为xxx。
3.2 签名算法(SignSignSign)
- 对消息m进行签名;
- 随机选择整数k(1<k<p−1)k(1<k<p-1)k(1<k<p−1);
- 计算rrr,r≡gk(modp)r≡g^k (mod p)r≡gk(modp);
- 计算sss,s≡[h(m)−xr]k−1(mod(p−1))s≡[h(m)-xr] k^{-1} (mod (p-1))s≡[h(m)−xr]k−1(mod(p−1)),h(m)h(m)h(m)表示哈希函数;
- 得出数字签名(r,s)(r, s)(r,s)。
3.3 签名验证(VerifyVerifyVerify)
- 根据公钥yyy,消息mmm验证数字签名(r,s)(r, s)(r,s);
- 计算gh(m)′g^{h(m)'}gh(m)′,gh(m)′=yrrs=(gx)r(gk)(h(m)−xr)/kg^{h(m)'}=y^r r^s=(g^x )^r (g^k )^{(h(m)-xr)/k}gh(m)′=yrrs=(gx)r(gk)(h(m)−xr)/k;
- 验证等式gh(m)′=gh(m)g^{h(m)'}=g^{h(m)}gh(m)′=gh(m)是否成立,若成立则为真,否则为假。
密码学——elgama加解密及数字签名算法相关推荐
- 现代密码学上机程序c语言,现代密码学与加解密技术实验报告
现代密码学与加解密技术实验报告 现代密码学与加解密技术实验 一. 实验教学目标与基本要求 现代密码学与加解密技术实验是本课程重要的实践教学环节.实验的目的 不仅仅是验证理论知识,更重要的是通过实验加强 ...
- 现代密码学上机程序c语言,现代密码学与加解密技术实验指导书.doc
软件工程课程设计指导书 现代密码学与加解密技术实验指导书 高天寒 编 东北大学 软件学院 2007年8月 软件工程实验指导书 目 录 一.现代密码学与加解密技术实验指导书选用范围 二.实验基本目的与要 ...
- 前后端java+vue 实现rsa 加解密与摘要签名算法
RSA有两个密钥,一个是公开的,称为公开密钥:一个是私密的,称为私密密钥. 特点: 公开密钥是对大众公开的,私密密钥是服务器私有的,两者不能互推得出. 用公开密钥对数据进行加密,私密密钥可解密:私密密 ...
- 区块链之加解密算法数字证书
目录 一.加解密算法 数字签名 对称加密 DES(Data EncryptionStandard) 3DES(Triple DES) AES(Advanced EncryptionStandard) ...
- 加解密和数字证书详解
一,对称加密 所谓对称加密,就是它们在编码时使用的密钥e和解码时一样d(e=d),我们就将其统称为密钥k. 对称加解密的过程如下: 发送端和接收端首先要共享相同的密钥k(即通信前双方都需要知道对应的密 ...
- 密码学基础篇----密码学的加解密
认识密码学 什么是密码 密码简单来说就是用不是我们所熟悉的,不能马上识别的符号来代替的信息. 大概过程就是这样 密码学的发展史 古典密码学(1949年之前) 主要特点:数据的安全基于算法的保密. 密码 ...
- java 数字信封_GitHub - zhopen/eos-crypto-java: EOS 公钥加密,私钥解密。基于ECC+AES 实现的双向验证加解密。数字信封的 加解密。...
/** * * sender * * EOS8g1u3ktAGHs4QsVp9aeaWNebFLtprQHwpaSjegx6iEuoTNhjXU * 5KTZYCDdcfNrmEpcf97SJBCtT ...
- java 数字信封_GitHub - yanjunli/eos-crypto-java: EOS 公钥加密,私钥解密。基于ECC+AES 实现的双向验证加解密。数字信封的 加解密。...
/** * * sender * * EOS8g1u3ktAGHs4QsVp9aeaWNebFLtprQHwpaSjegx6iEuoTNhjXU * 5KTZYCDdcfNrmEpcf97SJBCtT ...
- .NET Core加解密实战系列之——消息摘要与数字签名算法
简介 加解密现状,编写此系列文章的背景: 需要考虑系统环境兼容性问题(Linux.Windows) 语言互通问题(如C#.Java等)(加解密本质上没有语言之分,所以原则上不存在互通性问题) 网上资料 ...
最新文章
- S-T平面图中利用最短路求最小割(BZOJ 1001)
- 数据库连接池连接异常com.alibaba.druid.pool.GetConnectionTimeoutException
- iframe内容 固定比例_允知研习|浅析固定总价合同的结算问题
- 信息系统项目管理知识--物联网
- 在VC6中使用ADO读取Oracle中的BLOB字段
- 《精解 Windows 10》——2.10 触摸手势
- H.264参考软件JM12.2RC代码详细流程
- 数据结构笔记(一)-- 概念
- 无法抗拒Minecraft给予超高的自由度和探索-微访谈
- 2019白金之星 第一次初赛 第一题 Polynomial
- 游戏是怎么赚钱的 - 科普篇
- 成都盛铭轩:产品主图提升转化率
- element ui表单必填_element-ui设置下拉选择切换必填和非必填
- 投资理财-合理配置资产结构
- vue 引入字体图标显示方块
- 2. 查询表product——统计所有库存商品的总价值
- 圣诞表白html,圣诞节表白语 圣诞节表白情话
- EF(一) -- EF简介
- 学习强国十年磨剑最新分数及排名
- 阿里云服务器1核1G内存1M带宽能放几个网站及多少流量
热门文章
- 一款非常萌的桌面工具 --- Bongo Cat Mver 附使用教程
- 关于IOS中uni.downloadFile下载的图片显示不出来的解决方法
- 初学古琴怎么学?古琴入门基础知识
- Mysql安装步骤方法
- VSCode更新到1.42.1版本有问题(January 2020 (version 1.42))
- 计算机网络第五章(谢希仁)--运输层 思维导图
- 苹果手机4g网速慢怎么办_手机推荐:选华为5G还是苹果4G:内行人说出了大实话!...
- Susman Godfrey L.L.P.与Hausfeld LLP宣布3.4亿美元诉讼及和解方案,涉及在2007年8月至2010年5月期间持有基于美元LIBOR工具的个人和机构
- 群晖 NAS DS218j的优秀与缺憾
- 基础IT技术(Java,c++等)技术学习资料300篇