- 博客(9)
- 收藏
- 关注
原创 RSA攻击方法总结笔记
RSA攻击方式总结1.模数分解1).解题思路 a).找到RSA算法中的公钥(e,n) b).通过n来找到对应的p和q,然后求得φ(n) c).通过gmpy2.invert或者gmpy2.gcdext可以求得e的逆元d d).通过pow函数将密文解密(pow(a,b,c)函数的速度比直接写a**b mod c 要快)2).直接分解n a).通常情况下,如果n的长度小于256bit(二进制),那么可以通过本地的工具进行分解(RSATool2v17) b).如
2021-08-09 15:16:34
4012
原创 散列算法和数字签名笔记
散列算法与数字签名在RSA加密中,如果A是发送方,B是接受方,则A用B的公钥加密信息,而B可以用自己的私钥解密信息,从而达到保密传输的作用。但是在数字签名技术中,这个过程恰好是反过来的,即:A是发送方,B是接收方,A用自己的私钥加密信息,B用A的公钥解密信息。因为A的私钥只有A持有,所以如果B使用A的公钥成功解密信息,则可以证明是A发来的信息。即使中间有人用A的公钥解密后篡改了信息,由于没有私钥,从而无法完成对篡改后信息的加密,这样B也不会认为被篡改后的信息是A发过来的。尽管这个机制无法完成保密(因为
2021-08-09 15:15:12
859
原创 生日悖论的笔记
生日悖论生日悖论的传统表述生日悖论的起源是一个简单的问题:两个人出生在同一天的概率是多少?这个也通常是概率课堂上老师会展现的一个问题。这个问题的答案可以很轻松的看出是1/365≈0.274(假设一年只有365天,且生日分布均匀。因为两个人的生日是独立事件,所以第一个人可以为一年中的任意一天,而第二个人则是一年中固定的与第一个人相同的一天。也可以从反面计算两个人生日不同的概率(365*364)/(365*365),然后用1减去,可以得到相同的结果)。生日悖论的扩展而当问题扩展到在三个人中,有两个人生日
2021-07-11 21:24:52
496
原创 离散对数和秘钥交换笔记
Diffie Hellman算法1. 离散对数:求解如下形式的代数方程:ax=b式中:a,b是有限域F中的已知元素。求解x就是所谓的“计算离散对数”离散对数与通常的对数相比,区别在于:a. 对数作用在实数和复数这样的连续的数集上,离散对数作用在有限域上b. 求解任意实数或者复数的对数都有简便的公式,但是迄今为止还没有计算离散对数的容易方法。许多密码体系的安全性也正是来源于求解离散对数的困难性。2.Diffie Hellman秘钥交换协议该协议基于离散对数难题,也是基于离散对数难题的最简单却
2021-06-20 12:04:39
389
原创 简单介绍RSA加密算法
RSA算法简介RSA算法基于一个广泛用做密码学基石的数论问题——因子分解问题:给一个任意的整数n(通常很大,并且越大越难分解),在合理的时间内分解出它的素因子是很困难的。通常困难程度随着n的银子个数减少而增加,最难的情形就是n是两个大素数的乘积。而RSA算法的安全性就基于这个最难的情形。加密过程a. 首先设出p,q两个非常大的素数(通常在十进制下有几百位),而n=pq,则可以得知,通过p,q求n是简单的,而通过n来求p,q则是非常困难的。b. 计算t=φ(n)=(p-1)(q-1),其中φ(n)是欧
2021-06-19 16:47:34
1010
原创 常用的逆元相关知识
逆元的相关知识1. 单位元(幺元,Identity Element,简称IE)单位元是集合里的一种特别的元素,与该集合里的二元运算有关。当单位元和其他元素结合时,并不会改变那些元素。单位元被使用在群和其他相关概念之中。设 (S,)为一带有一二元运算 的集合S(称之为原群),则S内的一元素e被称为左单位元若对所有在S内的a而言,ea=a;且被称为右单位元若对所有在S内的a而言,ae=a。而若e同时为左单位元及右单位元,则称之为双边单位元,又简称为单位元。例如:加法运算中的0,乘法运算中的1。2.逆元
2021-06-12 18:41:09
2119
原创 中国剩余定理(孙子定理)
中国剩余定理(孙子定理)1.来源该定理出自《孙子算经》的问题:“今有物不知其数,三三数之剩二(除以3余2),五五数之剩三(除以5余3),七七数之剩二(除以7余2),问物几何?”也有一说为韩信点兵2.分析过程分析该题的性质,可将该题转化为S=3*k1+2=5*k2+3=7*k3+2的式子。设n1=3*k+2,n2=5*k+3,n3=7*k+2,因为n1除以3余2,如果使n1+n2也满足除以3余2,进而使得n1+n2+n3的和也满足除以3余2,那么n2的值应为3的倍数(因为n1+3k mod 3=2,k
2021-06-12 18:06:33
4518
原创 gmpy2 python 扩展库的用法笔记
gmpy2 python 扩展库的用法笔记1. 初始化一个高精度的数据类型 a. a=gmpy2.mpz(x) 可以为变量a赋予一个高精度的大整数(长度可达50位) b. a=gmpy2.mpq(x) 可以为变量a初始化一个高精度的分数 c. a=gmpy2.mpfr(x) 可以为a初始化一个高精度的浮点数 d. a=gmpy2.mpc(x) 可以为a初始化一个高精度的复数2. 其它的常用语法 a. 模幂运算:gmpy2.powmod(a,n,p) #对于给定的整数p,n,a,计算aⁿ
2021-06-12 17:48:48
7279
3
原创 Python语法的一个小问题(可变类型与不可变类型)
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar
2021-04-13 16:19:37
94
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人