EIGamal密码体制
EIGamal密码体制:由EIGamal提出,是一种基于离散对数问题的双钥密码体制,既可用于加密,又可以用于签名。
密钥对生成步骤:
1.取大素数p和g<p(g最好是p的素根)
2.选一整数x<p,(p,g,x)是私钥
3.计算y=gx (mod p),(p,g,y)作为公钥
加密和解密步骤
要加密M,选取一个随机数k,(k,p-1)=1即k与p-1互素
加密: a=gk (mod p)
b=Myk (mod p)
C=a||b(||表示连接)
解密:M=ba-x (mod p)
证明:ba-x(mod q)Ξ Mykg-xk Ξ Mgxkg-xk Ξ M
EIGamal的一些特征:
1.加密过程中引入随机数
2.密文是明文的两倍
EIGamal的安全性基础:

还记得对称加密的密钥传送必须通过安全通道问题,有这样一种交换会话密钥的方案:
Diffie-Hellman密钥交换----于1976年提出的第一个公钥案
允许两个用户安全地建立一个秘密信息,用于后续的通讯过程
算法的安全性依赖于:有限域上计算离散对数的难度。

p,g可以让第三方知道,A和B先约定共同的p和g,A自己决定一个Xa,B自己决定一个Xb,通过计算Y=gx (mod p)算出各自的Ya和Yb,交换Ya和Yb,再计算各自K=Yx (mod p),发现K的值是相同的,值为K=gxaxb (mod p) ,这时K就可以作为共享密钥,用于后续的通讯。
DH方案的第三者攻击方法:

问题在于A和B在不安全的信道上通信,无法确定另一方到底是谁。
改进方案:

K是A,B之间的认证秘密信息
EIGamal密码体制的更多相关文章
- RSA密码体制
公钥算法的基本数论知识 公钥密码学中大部分引用了数论的成果,所以必要在介绍RSA密码体制之前,详细介绍一下所使用的几个数论的知识点 欧几里得算法 欧几里得算法主要是解决最大公约数问题,记两个正整数\( ...
- 【密码学】RSA公钥密码体制
RSA公钥密码体制是美国麻省理工学院(MIT)的三位科学家Rivest.Shamir.Adleman于1978年提出的,简称RSA公钥秘密系统.实际上,RSA稍后于MH背包公钥密码实用系统,但它的影响 ...
- 椭圆曲线密码体制(ECC)简介
一.椭圆曲线的基本概念 简单的说椭圆曲线并不是椭圆,之所以称为椭圆曲线是因为他们是用三次方程来表示,并且该方程与计算椭圆周长的方程相似. 对密码学比较有意义的是基于素数域GF(p)和基于二进制域(GF ...
- 密码学笔记(5)——Rabin密码体制和语义安全性
一.Rabin密码体制 Rabin密码体制是RSA密码体制的一种,假定模数$n=pq$不能被分解,该类体制对于选择明文攻击是计算安全的.因此,Rabin密码体制提供了一个可证明安全的密码体制的例子:假 ...
- 如何综合运用对称加密技术、非对称加密技术(公钥密码体制)和Hash函数 保证信息的保密性、完整性、可用性和不可否认性?
一.几个问题 在提出问题之前,先创建一个使用场景,发送方(甲方)要给接收方(乙方)发送投标书.大家知道,投标书都包括发送方的标的,这个标的是不能被竞标者知晓,更不能被竞标者修改的.在传输的投标书时,提 ...
- 加解密、PKI与CA基础
介绍 这门知识如果以前尝过的各位想必都知道:枯燥无比!因此在文中我会尽量讲的生动些,举一些例子,并试图以一个完整的例子来贯穿整个讲述过程.今年又恰逢莎翁逝世400周年,一方面也为了纪念这位伟大的作家. ...
- 密码疑云 (3)——详解RSA的加密与解密
上一篇文章介绍了RSA涉及的数学知识,本章将应用这些知识详解RSA的加密与解密. RSA算法的密钥生成过程 密钥的生成是RSA算法的核心,它的密钥对生成过程如下: 1. 选择两个不相等的大素数p和q, ...
- 信息安全-5:RSA算法详解(已编程实现)[原创]
转发注明出处:http://www.cnblogs.com/0zcl/p/6120389.html 背景介绍 1976年以前,所有的加密方法都是同一种模式: (1)甲方选择某一种加密规则,对信息进行加 ...
- 【转】SSL协议、SET协议、HTTPS简介
一.SSL协议简介 SSL是Secure Socket Layer的缩写,中文名为安全套接层协议层.使用该协议后,您提交的所有数据会首先加密后,再提交到网易邮箱,从而可以有效防止黑客盗取您的用户名.密 ...
随机推荐
- Python队列服务 Python RQ Functions from the __main__ module cannot be processed by workers.
在使用Python队列服务 Python RQ 时候的报错: Functions from the __main__ module cannot be processed by workers. 原因 ...
- contentProvider模板
package com.example.qunzheng.todolist.provider; import android.content.ContentProvider; import andro ...
- iotop,pt-ioprofile : mysql IO负载高的来源定位
http://www.cnblogs.com/cenalulu/archive/2013/04/12/3016714.html 前言: 在一般运维工作中经常会遇到这么一个场景,服务器的IO负载很高(i ...
- C# - 集合类 - 集合类型
Stack类 ns:System.Collections 此类模仿了一个简单的先进后出(LIFO)的集合 它实现了ICollection接口 可以通过三种方式创建Stack类对象 Stack stac ...
- iOS开发经验总结(下)
四十.AFNetworking 传送 form-data 将JSON的数据,转化为NSData, 放入Request的body中. 发送到服务器就是form-data格式. 四十一.非空判断注意 BO ...
- checkbox组件
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...
- axis2调用webservice
public static long TIMEOUTINMILLISECONDS=100000; /** * 调用webservice * @param url webserviceURL * @pa ...
- [置顶] asp.net(c#)中相对路径(虚拟路径)和物理磁盘路径的转换
物理路径就是磁盘路径,也就是说是在磁盘上的位置,虚拟路径也就是web页面上的路径,是相对于应用程序而言的 /// <summary> /// 将物理路径转换成相对路径 /// </s ...
- Import user's Environment path into Linux cron task
How to use "cron" to create scheduled task Minimum time cycle: 1 minute Use crontab -e edi ...
- Java内存模型浅析
JVM在执行java程序时会将它所管理的内存划分成若干个不同的数据区域.如图所示: 其中方法区和堆是所有线程共享的数据区,其他区域则是线程隔离的数据区. 这些区域的功能各有不同: 程序计数器:可以理解 ...