![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
密码学
轩渊
这个作者很懒,什么都没留下…
展开
-
merkle树python实现
merkle树百度解释博客解释莫科尔树存储哈希值一棵莫科尔树,树中每个叶子节点对应一个哈希值。莫科尔树的高度为 h,那么每个莫科尔树能够记录 2**h个完整性摘要值。每更新一个叶子节点,需要更新从叶子节点到根的这一路径上所有节点的哈希值。如图 ,节点 1 和节点 2 已经存储了完整性信息,新完整性信息将保存在节点 3,并且由于节点 3 的值发生变化,导致需要重新计算节点 6 和节点 7 的哈希值。实现from algorithm.g_hash import G_hash"""原创 2021-07-01 14:33:50 · 1412 阅读 · 2 评论 -
RSA生成公私钥及签名算法
Miller_Rabin素数检测算法multimod 快速幂取模算法公私钥生成算法from random import randintfrom algorithm.g_prime import Miller_Rabinfrom algorithm.g_prime import multimod# 求最大公约数def gy(m,n): if m < n: # 如果m比n小,互换m和n的位置 m, n = n, m r = m % n # 求出.原创 2021-07-01 14:17:09 · 498 阅读 · 0 评论 -
python实现shamir秘密共享算法
shamir算法介绍拉格朗日插值解密代码实现用到的G_hash是国密算法SM3,g_p是Miller_Rabin算法生成大素数算法ModReverse是生成逆元算法from random import randintfrom algorithm.g_hash import G_hashfrom algorithm.g_keypairs import g_p, ModReverse"""使用说明只能加解密64位hash值加密时,G_si(S,n,k) 加密数据S,给n个原创 2021-07-01 14:08:30 · 2894 阅读 · 0 评论 -
python实现求逆元算法
# 扩展欧几里得求逆元def exgcd(a, b): if b == 0: return 1, 0, a else: x, y, q = exgcd(b, a % b) x, y = y, (x - (a // b) * y) return x, y, q# 扩展欧几里得求逆元def ModReverse(a,p): x, y, q = exgcd(a,p) if q != 1: rai原创 2021-07-01 14:08:07 · 4135 阅读 · 3 评论 -
基于Miller_Rabin生成大素数算法实现
Multimod()函数原理"""f_n_1()函数用来分解n − 1为 2^r*d,奇数为dMultimod()函数用来快速幂分解Miller_Rabin(n,k)函数调用前两个函数实现Miller_Rabin算法具体步骤n代表判别,k代表出错概率返回True即是素数(结果为素数的出错概率为(1/4)**k)"""from random import randintdef f_n_1(n): r=0 if n%2==0: n=n/2 r原创 2021-07-01 14:01:13 · 566 阅读 · 0 评论 -
SM3算法python实现
"""SM3是中华人民共和国政府采用的一种密码散列函数标准,适用于商用密码应用中的数字签名和验证、消息认证码的生成与验证以及随机数的生成, 可满足多种密码应用的安全需求对长度为l(l < 2 ^ 64)比特的消息m,SM3杂凑算法经过填充和迭代压缩,生成杂凑值,杂凑值长度为256比特。s2m2b(s) 字符串s 转化为二进制字符串m & 数据m填充,分组b[i]cf(v,b) CF函数实现zy(n,k) #循环左移k%32位,共32比特cut_text(text,原创 2021-07-01 13:54:31 · 2906 阅读 · 0 评论 -
拉格朗日插值
https://blog.csdn.net/shenwansangz/article/details/88682785k 是点的个数Xj yj 对应点的自变量和值i 是与 j 不相同的KXj yj 对应点的自变量和值转载 2021-06-29 16:30:46 · 194 阅读 · 0 评论 -
shamir
秘密共享技术是密码学和信息安全的一个重要研究内容,Shamir密钥分享算法最早是由Shamir和Blackly在1970年基于Lagrange插值和矢量方法提出的,其基本思想是分发者通过秘密多项式,将秘密s分解为n个秘密分发个持有者,其中任意不少于k个秘密均能恢复密文,而任意少于k个秘密均无法得到密文的任何信息。表示Shamir密钥共享算法由一个二元数(k, n)表示,其中n表示将明文s加密为n个Shadowu,k表示必须至少同时拥有k个Shadow才能解密获得成明文。加密对于待加密的明文.原创 2021-06-28 16:35:26 · 795 阅读 · 0 评论 -
有限域、、
https://www.bilibili.com/video/BV1Sa411A7na?from=search&seid=16478915275125733890原创 2021-06-28 15:51:14 · 92 阅读 · 0 评论 -
杂凑函数
一般杂凑函数的概念(一)基本概念杂凑函数又称为Hash函数,报文摘要函数等。其目的是将任意长度的报文m压缩成指定长度的数据H(m)。H(m)又称为M的指纹。基本要求:实现压缩;容易计算(二)杂凑函数应满足的条件(1) H能够应用到任何大小的数据块上;(2) H能够生成大小固定的输出;(3)对任意给定的x,H(x)的计算相对简单,使得硬件和软件的实现可行;(4) 对于任意的y,要发现满足H(x)=y的x是计算上不行的;(5) 对于任意给定的x1, 要找到满足H(x2)=H(x),原创 2020-10-13 20:10:11 · 4539 阅读 · 0 评论 -
生日攻击
生日攻击目的:构造出报文m和报文m2,使得H(m)=H(m2)第I类生日攻击给定一个散列函数H,有n个可能的输出。若固定一个输出值为H(x),随机选取H的k个输入,k必须为多大才能使至少存在-一个输入y,使H(y)=H(x)的概率大于0.5?对于长度为mbit的散列码,共有2^m个可能输出,要使p(n,k)>0.5, 只须取k =2^m-1生日悖论■问题:在k个人中,要至少有两个人生日相同的概率大于0.5,k的最小值为多少k=23结论:对于杂凑值为mbit的散列原创 2020-10-13 20:09:39 · 1123 阅读 · 0 评论 -
椭圆曲线
椭圆曲线上的加法运算定义如下:如果椭圆曲线上的3个点位于同一直线上,那么它们的和为O。从这个定义出发,我们可以定义椭圆曲线的加法规则:0为加法的单位元,对于椭圆曲线上的任何一点P,有P+O=P。对于椭圆曲线.上的一-点P=(X,y),,它的逆元为P= ( x,-y)。注意到这里有P+ (- P) =P-P=O计算xG相关公式如下:有限域GF§上的椭圆曲线y² = x³ + ax + b,若P(Xp, Yp), Q(Xq, Yq),且P≠-Q,则R(Xr,Yr) = P+Q 由如下.原创 2020-10-13 20:09:15 · 3672 阅读 · 0 评论 -
求大素数原根算法(python代码)
定义:代码可直接看下面求素数p原根的最终方法对于素数 p,如果存在一个正整数 1<a<p,使得 a1,a2,…,ap−1a1,a2,…,ap−1 模 p 的值取遍 1,2,…,p−11,2,…,p−1 的所有整数,称 a 是 p 的一个原根(primitive root),就是循环群的生成元。下面求原根是基于素数来说的原理欧拉定理欧拉定理表明,若n,a为正整数,且互素,则aϕ(n)=1 (mod n)ϕ(n)是欧拉函数,素数的ϕ(n)=原创 2020-06-04 18:21:18 · 6668 阅读 · 5 评论 -
快速幂取模(python)
定理:要计算只包含加减乘的整数表达式除以整数m的余数时,可以在每步计算时对m取余对于:a*a %n= (a%n) *(a%n) %n解决 a*a %n 或 a**k %n 中 数据太大超出范围的问题乘法求模数对于a*a%n可以#如果n*n的计算不超出数的范围def multi(a,b,n): ans = 0; ans=a%n ans=ans*(b%n)%n return ans}#如果超出范围def multi(a,b,n): ans =0;.原创 2020-06-04 18:16:17 · 2288 阅读 · 1 评论 -
原根,RSA和Elgamal算法
原根假设一个数g是P的原根,那么g^i mod P的结果两两不同,且有 1<g<P,0<i<P,归根到底就是g^(P-1) = 1 (mod P)当且仅当指数为P-1的时候成立.(这里P是素数)。在我的理解下,原根的x次方%p两两不一样 x in [1,...,p-1] 就可以说x是p的原根RSA算法RSA的安全性依赖于大数分解,但是否等同于大...原创 2020-04-02 19:13:11 · 1107 阅读 · 1 评论 -
RSA 加密算法
RSA 加密算法是一种非对称加密算法。在公开密钥加密和电子商业中 RSA 被广泛使用RSA 算法的可靠性由极大整数因数分解的难度决定。换言之,对一极大整数做因数分解愈困难,RSA 算法愈可靠。假如有人找到一种快速因数分解的算法的话,那么用 RSA 加密的信息的可靠性就肯定会极度下降。但找到这样的算法的可能性是非常小的。如今,只有短的 RSA 密钥才可能被强力方式解破。算法基本原理...原创 2020-03-21 21:00:43 · 295 阅读 · 0 评论 -
密码学的一些基本概念
密码学是研究如何隐密地传递信息的学科。密码学的作用机密性 是网络信息不泄露给非授权用户的特性,防止被动攻击。 常用的保密技术包括:防侦听、防辐射、信息加密、物理保密等完整性. 完整性是网络信息未经授权不能进行改变的特性。 完整性是一种面向信息的安全性防止主动攻击。不可否认性 用于防止通信双方中的某一-方 对所传输消息的否认可用性(访问控制) 访问控制的目标是防止对网...原创 2020-03-19 17:33:43 · 1348 阅读 · 0 评论