密码学
文章平均质量分 85
cipher
D-A-X
这个作者很懒,什么都没留下…
展开
-
分解有限域F_q上的多项式f(x)
分解有限域 FqF_qFq 上的多项式 f(x)f(x)f(x):分离重因式:g(x)=gcd(f(x),f′(x))g(x) = gcd(f(x),f'(x))g(x)=gcd(f(x),f′(x))h(x)=f(x)/gcd(f(x),f′(x))h(x) = f(x)/gcd(f(x),f'(x))h(x)=f(x)/gcd(f(x),f′(x))对 g(x),h(x)g(x), h(x)g(x),h(x),得到 ddd 次不可约因式的乘积:gd(x)=gcd(xqd−x,g(x原创 2021-08-12 18:18:10 · 511 阅读 · 0 评论 -
【题】公钥密码
公钥密码第1题因此首先使用ShanksShanksShanks算法计算出aaa的值,如下:因此明文应为:dk(y1,y2)=y2(y1a)−1=5∗(227)−1=12d_k(y_1,y_2)=y_2(y_1^a)^{-1}=5*(2^{27})^{-1}=12dk(y1,y2)=y2(y1a)−1=5∗(227)−1=12第2题已知:5x=3,5y=45^x=3,5^y=45x=3,5y=4,求5xy5^{xy}5xy:首先利用ShanksShanksShanks算法原创 2020-11-22 23:26:02 · 289 阅读 · 0 评论 -
香农(Shannon)理论题
第4题采用分组长度为128比特,密钥长度为256比特的AES加密算法加密明文,假设密钥均匀随机选取,明文是冗余度为0.75的小写英文字母,试计算至少需要______(向上取整)组密文可以唯一确定加密密钥。密钥空间:∣K∣=2256|K|=2^{256}∣K∣=2256(由于密钥生成算法所以给定初始密钥后后续NNN轮密钥也就确定了,因此密钥空间就是初始的22562^{256}2256);明文空间:∣P∣=2616|P|=26^{16}∣P∣=2616(明文首先由26个字母组成,表示一个字母需要8比特原创 2020-11-22 23:20:01 · 1064 阅读 · 0 评论 -
一张图看懂密文挪用
预备知识:短块处理 在分组密码加密的过程中,必然会遇到消息长度不是分组长度整数倍的情况,因此需要对最后一组密文进行处理,使得其达到分组长度。这个过程便是短块处理。短块处理分为两种方式:填充密文挪用填充 填充方式很多,也是最基础的做法,就是按照一定的规则对最后一组进行填充。填充方式有:pkcs#5/pkcs#7、ANSI X923、ISO 10126等。 需要注意的是,即使最后一组长度达到分组长度,也就是说消息长度是分组长度的整数倍,也需要进行填充。这是为了保证加解密过程可以保持协议规原创 2020-09-27 20:20:37 · 1477 阅读 · 1 评论 -
【gmssl】Can‘t open ./private/cakey.pem for reading, No such file or directory
问题描述 在使用gmssl对用户生成证书的过程中,出现了错误Can't open ./private/cakey.pem for reading, No such file or directory,情况如下:命令为gmssl ca -days 3650 -in Alice.csr -out caAlice.crt解决方法 提示信息很明显,这是由于没有对应文件的问题。首先明确报错中的路径./private/cakey.pem在哪里。打开gmssl的配置文件,默认目录应该是/usr/local/原创 2020-09-22 11:03:29 · 4558 阅读 · 2 评论 -
win10下安装使用GmSSL【基于VS Code、Ubuntu WSL】
写在前面 由于Windows自身对这些软件的兼容性一言难尽,而重新搭载虚拟机的过程又过于麻烦,因此笔者另辟蹊径,使用在Microsoft Store上的WSL来完成Linux环境的配置,同时结合VS Code来避免图形化界面的安装,尽量让Linux环境轻量级,同时也保证了代码高亮等更专业友好的开发环境。 具体安装步骤主要分以下几步:在Windows Store下载安装Ubuntu WSL配置VS Code在Ubuntu上配置GmSSL在Windows Store下载安装Ubuntu WS原创 2020-09-21 18:52:38 · 1979 阅读 · 6 评论 -
求域上多项式的逆元
问题描述设域F=Zp[x]f(x)\mathbb{F}=\mathbb{Z}_p[x]_{f(x)}F=Zp[x]f(x),其中f(x)f(x)f(x)为Zp\mathbb{Z}_pZp上的不可约多项式,多项式g(x)∈Fg(x)\in\mathbb{F}g(x)∈F,求g(x)g(x)g(x)在F\mathbb{F}F上的逆元。求逆过程先做辗转相除法:令r0=f(x),r1=g(x)r_0=f(x),r_1=g(x)r0=f(x),r1=g(x)r0=r1q1+r2 ……1r1原创 2020-05-12 19:04:54 · 2889 阅读 · 1 评论 -
辗转相除法求逆
方法例题参考资料[1]. 辗转相除法求模的逆元原创 2020-04-29 12:03:29 · 1374 阅读 · 0 评论 -
素数的神奇性质
NO1:素数的个数无限多 反证法:设所有素数为p1,p2,…,pnp_1,p_2,\dots,p_np1,p2,…,pn,不妨构造一个数A=p1×p2×⋯×pn+1A=p_1\times p_2\times\dots\times p_n+1A=p1×p2×⋯×pn+1,则显然AAA不能被任何素数整除,故AAA为一个新素数。NO2:相邻素数间隔任意大 对于∀0<a≤n\f...原创 2020-04-28 22:26:12 · 704 阅读 · 0 评论 -
模平方根与Cipolla算法
描述 Cipolla算法用于求解一般形式的模平方根,如m2≡c (mod p)m^2\equiv c\ (mod\ p)m2≡c (mod p)已知ccc反解mmm的过程。定理引入 该算法需要一定的数论基础,比如费马小定理、域相关知识。在证明过程中用到了下面的定理,在此只做引入不做证明。定理1: 由欧拉判别法知:对于x2≡a (mo...原创 2020-03-11 23:13:48 · 1457 阅读 · 1 评论 -
模平方剩余(二次剩余)与欧拉判别法
跳转到页内:欧拉判别法模平方剩余(二次剩余)定义 设ppp为奇素数,且(a,p)=1(a, p)=1(a,p)=1,如果二次同余式x2≡a (mod p)x^2\equiv a \ (mod \ p)x2≡a (mod p)有解,则称aaa为模ppp的平方剩余。显然a≠0a\not=0a=0。举例如对于奇素数p=5p=5p=5,有:12...原创 2020-03-10 23:16:51 · 8707 阅读 · 0 评论 -
素数之埃氏筛法&欧拉筛法
素数的判断 判断数n是否为一个素数,基本方法为从2开始向后枚举,若n不能被2,3,4,…,n-1整除,则n为素数,该判断方法的时间复杂度为O(n)O(n)O(n);更快的方法为,当枚举至n\sqrt nn时即可判断是否为素数,该判断方法的时间复杂度为O(n)O(\sqrt n)O(n)。代码如下://写法1,其中sqrt函数位于头文件<math.h>,double sqrt...原创 2020-02-04 19:49:41 · 216 阅读 · 0 评论 -
证明f(x)为可约多项式
相关定理换句话说: xqn−xx^{q^n}-xxqn−x是所有次数为nnn的因子的首1不可约多项式的乘积,每个不可约多项式有且仅有一次。换句话说:对于次数不为nnn的因子的多项式,若仍有f(x)∣xqn−xf(x) | x^{q^n}-xf(x)∣xqn−x,则其必为可约多项式。解题思路方法1: 利用数学归纳法和特征幂的二项定理进行证明。通常此类题如果有nnn的出现一般都要考虑...原创 2020-07-12 23:06:07 · 2240 阅读 · 0 评论 -
欧拉函数及其特殊性质证明
NO1.欧拉定理NO2.费马小定理NO3.若(m,n)=1(m, n)=1(m,n)=1,则φ(mn)=φ(m)φ(n)\varphi(mn)=\varphi(m)\varphi(n)φ(mn)=φ(m)φ(n)NO4.若ppp为素数,eee为正整数,则φ(pe)=pe−pe−1\varphi(p^e)=p^e-p^{e-1}φ(pe)=pe−pe−1NO5.对正整数m=∏i=1s...原创 2020-03-30 21:51:11 · 393 阅读 · 0 评论 -
win10下安装gmp库(IDE选择为Dev C++)
下载GMP在GMP官网下载,下载链接下载后在你想保存的目录下解压,笔者在d:/gmp-6.2.0下解压。下载安装MSYS2MSYS2是windows下的类unix系统的终端程序。MSYS2支持64位和32位系统。在逛网下载,下载链接接着根据官网的提示进行安装配置按照默认路径安装安装结束后打开运行,使用命令pacman -Syu进行安装关闭程序,并再次打开,使用命令pacman -Su进行安装配置MSYS2由于在安装GMP过程中需要make,m4等组件,因此使用命令pacman -S原创 2020-09-14 12:16:51 · 4733 阅读 · 7 评论 -
密钥管理
多级密钥管理数据密钥、MAC密钥等由二级密钥加密,二级密钥由恢复密钥RK加密,RK由主密钥加密。原创 2020-06-17 16:20:45 · 196 阅读 · 0 评论 -
Fermat素性测试&Miller-Rabin素性测试
判断素数的常规方法埃氏筛法&欧拉线性筛法Fermat素性测试 顾名思义,该算法是基于FermatFermatFermat小定理完成的。已知对于(a,p)=1(a,p)=1(a,p)=1,且ppp为素数,有ap−1≡1 (mod p)a^{p-1}\equiv 1\ (mod\ p)ap−1≡1 (mod p)成立。但该定理的逆定理不一定成立,...原创 2020-03-12 18:33:28 · 760 阅读 · 0 评论 -
SSL握手协议
握手协议执行过程第一阶段 客户端向服务端发Hello信息,包含协议版本、随机数、会话ID、密码套件等信息;服务端向客户端发Hello信息,包含协议版本、随机数、会话ID、密码套件等信息。第二阶段 服务器发证书给客户端;包含服务器自身相关证书、数字签名、参数等。第三阶段 客户端发证书给服务端;包含客户端自身证书、签名、主密钥等。第四阶段 客户端和服务端均根据主密钥生成各类密钥,如:消息鉴别密钥、分组加密初始向量IV、分组加密密钥等。第五阶段 服务端和客户端分别发送握手协议结束申原创 2020-06-17 13:24:43 · 593 阅读 · 0 评论 -
原像、第二原像、碰撞;随机预言机;生日攻击
三个问题原像 给定一个消息摘要yyy,是否可以找到xxx使得h(x)=yh(x)=yh(x)=y。 若原像问题可解,则称(x,y)(x,y)(x,y)为有效对;若不能解则称原像稳固。第二原像 给定一个消息xxx,其对应Hash值为y=h(x)y=h(x)y=h(x),是否可以找到x′≠xx'\not=xx′=x使得h(x′)=yh(x')=yh(x′)=y。 若第二原像可解,则称(x′,h(x))(x',h(x))(x′,h(x))为有效对;若不可解则称第二原像稳固。碰撞 不原创 2020-06-16 23:19:39 · 3935 阅读 · 0 评论 -
差分分析【附code】
算法步骤收集大量明密文对;选取一个固定的输入值x′x'x′;遍历所有收集到的明密文对,寻找xxx、x∗x^*x∗,使得x⨁x∗=x′x\bigoplus x^*=x'x⨁x∗=x′;创建4元组(x,x∗,y,y∗)(x,x^*,y,y^*)(x,x∗,y,y∗),其中,y=π(x),y∗=π(x∗)y=\pi(x),y^*=\pi(x^*)y=π(x),y∗=π(x∗);通过4元组构建差分表;从输入x′x'x′开始,在差分表中选取差分值最大的作为输出,找到输出对应的s盒子并将该值作为输入,再在原创 2021-01-20 11:59:20 · 3948 阅读 · 6 评论 -
PGP安全协议
传输过程使用Hash函数对消息求摘要,记为H(M)H(M)H(M);对消息摘要进行签名,记为sig(H(M))sig(H(M))sig(H(M));将该摘要和原消息连接作为发送的消息,记为sig(H(M))∣∣Msig(H(M)) || Msig(H(M))∣∣M;对该发送的消息进行压缩,记为Z(sig(H(M))∣∣M)Z(sig(H(M)) || M)Z(sig(H(M))∣∣M);对该压缩消息用会话密钥KsK_sKs进行加密,记为ECKs(Z(sig(H(M))∣∣M))EC_{K_s}原创 2020-06-16 12:42:59 · 3049 阅读 · 0 评论 -
SPN线性密码分析【附code】
综述SPN线性密码分析:基于S盒子逼近的分析方法;是已知明文的分析方法,需要较多的名密文对;此方法只能分析最后一轮子密钥,缩小了密钥穷举范围(当分析出最后一轮密钥时,由于密钥生成算法固定,因此也为分析第一轮密钥提供了可能)。相关概念定义对于{0,1}\{0,1\}{0,1}上的离散随机变量XiX_iXi,pi=P(Xi=0)p_i=P(X_i=0)pi=P(Xi=0)。定义XiX_iXi的偏差为:ϵi=pi−12\epsilon_i=p_i-\frac{1}{2}ϵi=pi−原创 2021-01-20 11:59:33 · 7082 阅读 · 7 评论 -
利用4字母法进行解密
4字母统计包该包在算法中需要被引用,用来检测暴力破解出的伪明文是否符合英文语法规则,以选取更接近真实的明文。展开查看System.out.println("Hello to see U!");...原创 2020-05-06 13:21:35 · 1965 阅读 · 1 评论 -
SageMath密码学密码体制及加解密
SageMath提供了一些古典密码体制,如下:仿射密码:AffineCryptosystem移位密码:ShiftCryptosystem代换密码:SubstitutionCryptosystem置换密码:TranspositionCryptosystem维吉尼亚密码:VigenereCryptosystem希尔密码:HillCryptosystem密码体制 class sa...原创 2020-05-06 00:30:31 · 2952 阅读 · 0 评论 -
信息熵
自信息量 单符号离散信源的数学模型可用一维随机变量XXX的概率空间分布来描述: 如果信源发出的消息xix_ixi的概率为p(xi)p(x_i)p(xi),则它所能提供的自信息量为:I(xi)=−log2 p(xi)I(x_i)=-log_2\ p(x_i)I(xi)=−log2 p(xi)含义:信源发出信号前信宿对消息的不确定性;信源发出信号后提供给...原创 2020-04-11 16:53:01 · 266 阅读 · 0 评论 -
古典密码加密与解密
移位密码加密:明文xxx,密文y(x)y(x)y(x)y(x)=(x+K)mod 26y(x) = (x + K)mod\ 26y(x)=(x+K)mod 26解密:密钥穷尽搜素法:从1开始进行尝试,知道找到有意义的明文和密钥K。一个例题:代换密码对字母进行一定形式的代换,共有26!26!26!种代换方式如下,小写字母表示明文,大写字母表示密文:可见,...原创 2020-04-07 16:50:42 · 5824 阅读 · 1 评论 -
Rabin加密算法
描述 Rabin加密算法和RSA加密算法形式类似,但解密过程有所不同。Rabin加密算法的解密过程会得到4个不同的明文,具体明文是哪一个还需要通过验证码进行验证。加密 由于Rabin加密算法是RSA加密算法的衍生类,因此有:令N=pqN=pqN=pq,其中p、qp、qp、q均为较大的奇素数;对于任意明文mmm,有对应的密文ccc,加密过程如下:c≡m2 (mod N...原创 2020-03-11 23:17:09 · 1432 阅读 · 0 评论 -
RSA加密算法
定义 对任意明文m,取一个整数NNN,使得N=pqN=pqN=pq,其中p、qp、qp、q为两大素数,常超过200位;取正整数eee,满足(e,φ(N))=1(e,\varphi(N))=1(e,φ(N))=1;ddd满足ed≡1 (mod φ(N))ed\equiv 1\ (mod\ \varphi(N))ed≡1 (mod φ(N))。则对于任意1≤...原创 2020-03-11 13:20:30 · 359 阅读 · 1 评论