![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
密码学
威化饼的一隅
找不到工作的威化饼,怎么办呐
展开
-
生成DES的S盒
文章目录1. DES的S盒满足的规则2. 设计思路2.1 总的思路2.2 满足S盒规则2.2.1 满足①+②2.2.2 满足③2.2.3 满足④2.2.4 满足⑤3. 编程实现3.1 矛盾组3.2 ⑤的不等组3.3 S盒存放3.4 ③④规则实现3.5 ⑤的实现3.6 摆放数字4. 结果呈现5. 完整代码1. DES的S盒满足的规则①S盒的每一行是整数0-15的一个置换;② 每个S盒的传输函数...原创 2019-11-09 15:24:16 · 6828 阅读 · 0 评论 -
RSA大数运算实现(1024位n) (1)
RSA大数运算(1024位)综述数据结构和宏数据结构及宏bignum.h中的函数定义bignum.h中函数声明函数实现方法加法减法乘法乘法算法除法取模数论中的一些函数求最大公因子和求逆模幂运算费马素性检测中国剩余定理实现的数论函数位运算函数左移右移获得二进制位数实现的位运算函数特殊操作函数求前几十个素数的乘积,存在文件中产生指定二进制位数大随机数(利用SHA-1和rand())寻找指定二进制位数素...原创 2018-12-08 21:20:33 · 11597 阅读 · 2 评论 -
RSA大数运算实现(1024位)(2)
接上一篇文章 在有了大数运算库之后,实现RSA完全不在话下了!RSA算法①随机选择两个大素数p和q,计算n=p·q,以及φ(n)=(p-1)·(q-1) ;②选择e=65537,如果不满足(e,φ(n))=1,则选择一个随机整数(e,φ(n))=1。③求出私钥d,使得e·d=1(mod φ(n))。④加密时,明文为M,密文C=Me mod n;⑤解密时,密文为C,解密后明文M’= ...原创 2018-12-08 22:36:07 · 7441 阅读 · 0 评论 -
RSA大数运算实现(1024位n)(3)
在(1)的基础上,采用Knuth提供的估商法来实现除法,会使得程序运行速度大幅加快,实际上整个程序的运行时间主要取决于除法的质量,使用Knuth大神的方法是绝佳选择。大神不愧是大神,方法tql! 因为公式编辑不太方便,所以引用《计算机程序设计艺术·第2卷》中的一些图片。 后面实现了另一种比较快的求逆算法,以及求贝祖等式和蒙哥马利算法之后再次更新。 首先是对于被除数和除数的说明:...原创 2019-02-02 20:03:59 · 2350 阅读 · 8 评论 -
RSA大数运算实现(1024位n)(4)快速求逆元算法
文章目录简介算法原理算法实现效果展示简介 在前面RSA大数运算实现(1024位n)的第一篇中,求逆元的方法是使用欧几里得除法,本质上是基于除法。在第三篇中,使用Knuth的除法提高了除法的效率,即便这样,除法仍然非常耗时,其时间复杂度和乘法相当。老师提供了一种方法,如果只是单纯地求逆元,可以只基于减法和移位这样非常快的操作实现,原理也非常容易理解。 使用这种方法求逆元,测试时,对于500...原创 2019-02-08 20:11:42 · 4688 阅读 · 5 评论 -
RSA大数运算实现(1024位n)(5)蒙哥马利模幂
文章目录简介算法说明符号定义蒙哥马利模乘蒙哥马利模乘算法蒙哥马利约简REDC(T)算法效率代码实现REDC蒙哥马利模乘模幂运行结果简介 在之前的(1)——(4)中,一步步地实现并优化了RSA及其大数运算库,之前说,RSA的效率取决于除法,是因为计算模幂,需要使用取模,取模使用除法,最后归根结底到了除法上。 然而,有另一种思路,就是在计算模幂时,使用蒙哥马利算法。蒙哥马利算法能够将取模时的...原创 2019-02-11 12:43:21 · 5663 阅读 · 3 评论 -
RSA大数运算实现(1024位n)(6)Miller-Rabin素性检测
文章目录简介算法描述代码运行结果简介 在(1)中,素性检验使用的是费马小定理,对于待检测的数n,如果an-1≡1(mod n),则认为n是素数,为了运算更快,a不是取随机的,而是取2、3、5、7。这样做不是很严谨,即便随机取a,费马检测对于一些伪素数也会失效,如561。 而Miller-Rabin素性检验,每做一次,出错概率至多为1/4,对于同一个数,多次检验,就能够在概率上保证一个数是...原创 2019-02-18 17:03:46 · 2954 阅读 · 0 评论