Cryptography I 学习笔记 --- 基于Diffie-Hellman的公钥加密
1. Diffie-Hellman协议:
假定g是集合G的生成元,G有n个元素。
Alice随机选取1-n中的一个数a,并公布ga为公钥
Bob随机选取1-n中的一个数b,并公布gb为公钥
那么gab就是Alice与Bob之间的私钥
从公钥中提取私钥,是一个离散对数问题,难以解决。
裸的Diffie-Hellman协议有中间人攻击的风险
2. Elgamal系统
n阶有限循环群G,哈希函数H,对称加密算法Es与Ds
Alice随机选取G的一个生成元g,从1到n-1间随机选取一个数a
Alice将a作为私钥,将(g,ga)作为公钥
现在Bob想要将消息m发送给Alice
加密:Bob从1到n-1间随机选取一个数b,计算u=gb,计算v=gab
计算k = H(u,v),再计算c = Es(k,m)
然后将(u,c)作为密文发送出去
解密:Alice接收到密文(u,c)
由于u=gb,Alice可以计算ua=gab=v
同样的,可以到k = H(u,v),然后就可以得到明文m = Ds(k,c)
3. Elgamal系统是选择密文安全的
4. twin Elgamal
Alice随机选取G的一个生成元g,从1到n-1间随机选取两个数a1与a2
Alice将(a1,a2)作为私钥,将(g,ga1,ga2)作为公钥
加密:Bob从1到n-1间随机选取一个数b
计算k = H(gb,ga1*b,ga2*b),再计算c = Es(k,m),输出(gb,c)
解密:Alice计算k = H(gb,ga1*b,ga2*b),得到明文m = Ds(k,c)
5. 单向函数
有函数f将集合X映射到集合Y,如果计算f是容易的,计算f-1是困难的,那么f就是单向函数
6. 离散对数单向函数
n阶有限循环群G,其生成元为g,定义函数f(x) = gx ∈ G。那么f是单向的。
离散对数单向函数有一些有趣的性质:f(x+y) = f(x) * f(y)也就是我们只需要知道f(x)与f(y)的值,不需要知道x与y的具体值,就能计算出f(x+y)
7. RSA单向函数
随机选择两个质数p,q,计算n = p * q,构造整数e与d,并且e*d = 1 mod φ(n)
定义函数f(x) = xe mod n,那么f是单向的
RSA单向函数的特殊性质在于 f(x*y) = f(x) * f(y),
Cryptography I 学习笔记 --- 基于Diffie-Hellman的公钥加密的更多相关文章
- Cryptography I 学习笔记 --- 基于陷门置换的公钥加密
RSA算法的工作流程 1. 生成公钥私钥 生成两个素数p和q,计算n=p*q,计算φ(n)=n-p-q+1,然后生成e与d,使 e * d = 1 mod φ(n). 然后以(n, e)作为公钥,(n ...
- Linux学习笔记——基于鸟哥的Linux私房菜
Linux学习笔记--基于鸟哥的Linux私房菜 ***** ARM与嵌入式linux的入门建议 (1) 学习基本的裸机编程:ARM7或ARM9,理解硬件架构和控制原理 (这一步是绝对的根基) (2) ...
- WCF学习笔记(基于REST规则方式)
一.WCF的定义 WCF是.NET 3.0后开始引入的新技术,意为基于windows平台的通讯服务. 首先在学习WCF之前,我们也知道他其实是加强版的一个面向服务(SOA)的框架技术. 如果熟悉Web ...
- deep learning深度学习之学习笔记基于吴恩达coursera课程
feature study within neural network 在regression问题中,根据房子的size, #bedrooms原始特征可能演算出family size(可住家庭大小), ...
- Linux常用命令学习笔记——基于CentOS 7
前言:最近在linux培训时复习了一下linux系统中一些常用的命令和用法,整理成了笔记,虽然些许零散,但希望对大家有所帮助. 目录 0.帮助指令 1.关机.重启.注销命令 2.文件和目录操作命令 3 ...
- Cryptography I 学习笔记 --- 总结
在b站上大概的看完了Dan Boneh的密码学,对现代密码学总算有了一个粗浅的认识. 总算能在纸上手写RSA公式并且证明之了,蛤蛤. 总体的感触就是,现代密码学是一个非常博大精深的体系,我等程序员最重 ...
- Cryptography I 学习笔记 --- 密钥交换
1. 使用可信第三方(Trusted third parties)进行密钥交换. a. Alice与TTP之间的密钥是K1,Bob与TTP之间的密钥是K2. b. Alice向TTP发起一个与Bob交 ...
- Cryptography I 学习笔记 --- 信息完整性
1. ECBC-MAC,需要一对密钥k与k1,然后将明文分组,用cbc模式对明文分块加密,将最后的密文块再用k1进行加密,即可得到结果 2. NMAC,需要一对密钥k与k1,然后将明文分组,用k加密第 ...
- Vue学习笔记-基于CDN引入方式简单前后端分离项目学习(Vue+Element+Axios)
一 使用环境 开发系统: windows 后端IDE: PyCharm 前端IDE: VSCode 数据库: msyql,navicat 编程语言: python3.7 (Windows x86- ...
随机推荐
- Windows Server 2008 正式版下载汇总
windows 2008是微软推出的新一代服务器专用系统版本, 具有良好的用户体验以及应用程序,windows 2008大幅提升了web服务以及应用程序的性能, 让企业在提供和维护资源服务的时候更加得 ...
- Unidirectional TSP UVA - 116 多段图的最短路
题目:题目链接 思路:从后往前进行dp,用next数组记录字典序最小的那一条路径 AC代码: #include <iostream> #include <cstdio> #in ...
- secureCRT中vim行号下划线问题
在vim中发现开启显示行号(set number)或语法高亮(syntax on)时,发现文档中很多地方都有下划线,对视觉产生极大干扰.开始还以为是vim的某个配置造成的,后来发现真正的元凶是secu ...
- Maven使用入门
Maven使用POM文件管理项目资源,pom.xml文件位于项目根目录下,结构如下: <?xml version="1.0" encoding="UTF-8&quo ...
- Jquery Dialog 详解(正在学习jquery,详解转载)
文章来源:http://xufish.blogbus.com/logs/39583154.html AUTHOR:Jevoly 还是先看例子吧.另外如果要拖动.改变dialog的大小的话要加上ui.d ...
- loj2056 「TJOI / HEOI2016」序列
当年我还没学cdq的时候在luogu上写过树套树的代码orzzz ref #include <algorithm> #include <iostream> #include & ...
- STL学习笔记6 -- 栈stack 、队列queue 和优先级priority_queue 三者比较
栈stack .队列queue 和优先级priority_queue 三者比较 默认下stack 和queue 基于deque 容器实现,priority_queue 则基于vector 容器实现 ...
- linux环境搭建系列之Apache MQ安装
1.创建文件夹 #mkdir MQ 2.解压 #tar -vxf apache-activemq-5.14.3-bin.tar.gz 3.进入解压后的目录 # cd apache-activemq-5 ...
- 第九届极客大挑战 部分WP
CODE 和0xpoker分0day 百度 取石子游戏. https://blog.csdn.net/qq_33765907/article/details/51174524 已经说得很详细了,慢慢来 ...
- 用python批量下载贴吧图片 附源代码
环境:windows 7 64位:python2.7:IDE pycharm2016.1 功能: 批量下载百度贴吧某吧某页的所有帖子中的所有图片 使用方法: 1.安装python2.7,安装re模块, ...