ElGamal数字签名
ElGamal数字签名
ElGamal数字签名方案使用私钥加密,公钥解密。
ElGamal数字签名方案的基本元素是素数q和a,其中a是q的原根。用户A通过以下步骤产生公钥/私钥对:
- 生成随机整数x,使得 1<x<q-1
- 计算y=a^x mod q
- A的私钥是x,公钥是{q,a,y}
要对消息M签名,用户A首先计算哈希值m=H(M),这里m是一个满足0<=m<=q-1的整数,然后A通过下列步骤产生数字签名:
- 选择一个随机整数k,使得1<=k<=q-1,并且gcb(k,q-1)=1,即k与q-1互素
- 计算s1=a^k mod q
- 计算k^(-1) mod (q-1) 即 计算k模q-1的逆
- 计算s2=k^(-1)(m-xs1)mod(q-1)
- 签名包括(s1,s2)对
任意用户B都能通过如下步骤验证签名:
- 计算v1=a^m mod q
- 计算 v2=(y^s1)(s1^s2) mod q
- 如果v1=v2,则签名合法
举例如下:
下图是10 (mod 19)的整数幂(其中a是10)
可以理解为
由知道此处取a=10,q=19
假设Alice想用哈希值m=14来对消息进行签名:
- 选择x=16
- 计算y=a^x mod q = 10^16 mod 19 =4 (可查看上图查找)
- Alice的私钥为16,公钥为{q,a,y}={19,10,4}
假设Alice想用哈希值m=14对消息进行签名:
- Alice选择k=5,因为gcb(5,18)=1(并且,k的选择要在1-18间)
- s1=a^k mod q = 10^5 mod 19 = 3
- k^(-1) mod (q-1) =5^(-1) mod 18 =11 (分数模运算)
- 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可以对签名进行验证
- v1=a^m mod q = 10 ^14 mod 19 = 16
- v2=(y^s1)(s1^s2) mod q =(4^3) (3^4) mod 19 = 5184 mod 19 =16
- 因此签名有效
ElGamal数字签名相关推荐
- 信息安全——ELGamal数字签名方案的实现
ELGamal数字签名方案的实现 1. 问题描述 为简化问题,我们取p=19,g=2,私钥x=9,则公钥y=29 mod 19=18.消息m的ELGamal签名为(r,s),其中r=gk mod p, ...
- 密码学之ElGamal 数字签名 密钥产生 数字签名 验证 python实现
ElGamal 数字签名 实验目的 通过实验了解数字签名的过程(签名过程和认证过程),掌握 ElGamal签名方案. 实验原理 ElGamal 数字签名的实现过程 1密钥产生:Alice 要对一个消息 ...
- elgamal签名算法c语言,ELGamal数字签名.doc
ELGamal数字签名 摘要 随着网络的发展,人们之间的各种交流变得越来越来方便,但同时也对信息传递的安全提出了新的要求,数字签名随之广泛的深入到了人们的日常生活中. ELGamal作为目前应用比较广 ...
- ElGamal公钥密码算法及ElGamal数字签名方案实现
ElGamal公钥密码算法是在密码协议中有着重要应用的一类公钥密码算法,其安全性是基于有限域上离散对数学问题的难解性.它至今仍是一个安全性良好的公钥密码算法.它既可用于加密又可用于数字签名的公钥密码体 ...
- elgamal java_eclipse实现ElGamal数字签名
ElGamal数字签名,供大家参考,具体内容如下 一.实验目的 学习ElGamal算法在数字签名方面的使用,掌握教科书版本的ElGamal数字签名算法的编写,掌握ElGamal加密算法和ElGamal ...
- ElGamal数字签名笔记
一.ElGamal数字签名的基本要素 1)a和q,q是素数,a是q的本原根. 2)签名方生成随机整数XA,(1<XA<q−1)X_A,(1<X_A<q-1)XA,(1< ...
- elgamal签名算法c语言,elgamal数字签名方案
Elgamal算法由T.E1Gamal在1985年发表的一篇论文中提出,是Rabin体制的一种变型.其修正形式已被美国国家标准技术研究所作为数字签名标准(DS),其核心就是著名是数字签名方法(DSA) ...
- 【密码学原理】数字签名(ElGamal签名,Schnorr签名,椭圆曲线签名,RSA-PSS签名)
数字签名是公钥密码学发展过程中最重要的概念之一,产生和使用数字签名过程的一般模型如图所示 消息认证可以保护消息交换双方不受第三方的攻击,但是不能处理通信双方自身发生的攻击.例如对下图中的某种方式进行攻 ...
- 密码学基础知识(八)略说数字签名
简略说说数字签名体制DSS: 怎么说呢,咱们之前在公钥密码那大致说了说,现在结合之前的DSA,ElGamal 等说一说. 首先,数字签名不能伪造,不能复制,不能篡改,不能抵赖,可验证. 那签名是啥呢, ...
最新文章
- mysql执行事务的语句_详解MySQL执行事务的语法和流程
- Oracle Dataguard中备库中归档日志不同步
- .NET设计模式系列文章
- Linux操作系统下软件的安装方法大全
- 一个简单的线性拟合问题,到底有多少种做法
- 【大会】声音叫醒耳朵,语音连接网络
- batchplot插件用法_Batchplot批量打印怎么用?Batchplot批量打印教程
- 为什么大多数编程语言性能对比都有问题?
- Spring MVC Interceptor
- JavaScript中“基本类型”之争
- 顺序表实验——顺序表的基本操作
- scrum敏捷开发流程介绍和心得
- Linux 误删文件后恢复文件
- 微服初识/优缺点2020-09-03
- 行业步入快速发展期,万亿级“虚拟蛋糕“将被如何瓜分?
- pythonmath库round计算_Python tensorflow.math.round()用法及代码示例
- <Linux> Ubuntu kernel 源码编译 替换
- 新安装的office(已激活),出现新建没有Word
- python matplotlib的常见参数以及画图示例
- android 地铁地图api,入门指南-地铁图 JS API | 高德地图API