大整数算法[12] 有符号乘法
摘要:★ 引子 前面三篇文章讲了 Comba 乘法和 Karatsuba 乘法,有了这两个算法,就可以很轻松的构造有符号数乘法。 顺便提一下:讲 Comba 乘法的实现的时候,给出了 x86 环境下的内联汇编实现,最近添加了 GCC x64 环境的内联汇编,已经补充到帖子当中。★ 实现 有符号数的乘法...
阅读全文
大整数算法[11] Karatsuba乘法
摘要:★ 引子 前面两篇介绍了 Comba 乘法,最后提到当输入的规模很大时,所需的计算时间会急剧增长,因为 Comba 乘法的时间复杂度仍然是 O(n^2)。想要打破乘法中 O(n^2) 的限制,需要从一个完全不同的角度来看待乘法。在下面的乘法算法中,需要使用 x 和 y 这两个大整数的多项式基表达式...
阅读全文
大整数算法[10] Comba乘法(实现)
摘要:★ 引子 上一篇文章讲了 Comba 乘法的原理,这次来讲讲如何实现。为了方便移植和充分发挥不同平台下的性能,暂时用了三种不同的实现方式: 1、单双精度变量都有的情况。 2、只有单精度变量的情况。 3、可以使用内联汇编的情况。 前面已经介绍了 Comba 乘法的原理和实现思路,为了方便,再把它贴...
阅读全文
大整数算法[09] Comba乘法(原理)
摘要:★ 引子 原本打算一篇文章讲完,后来发现篇幅会很大,所以拆成两部分,先讲原理,再讲实现。实现的话相对复杂,要用到内联汇编,要考虑不同平台等等。 在大整数计算中,乘法是非常重要的,因为在公钥密码学中模幂运算要频繁使用乘法,所以乘法的性能会直接影响到模幂运算的效率。下面将会介绍两种乘法:基线乘法和 C...
阅读全文
Andriod手势密码破解
摘要:★ 引子 之前在Freebuf上看到一片文章讲Andriod的手势密码加密原理,觉得比较有意思,所以就写了一个小程序试试。 ★ 原理 Android的手势密码加密原理很简单: 先给屏幕上的每一个点编号(一般是 3 X 3): 00,01,02 03,04,05 06,07,08 注意这...
阅读全文
大整数算法[08] 有符号加法和减法
摘要:★ 引子 前面几篇文章介绍了比较操作,绝对值加法和绝对值减法,现在就可以利用这几个算法构建有符号数的加减算法。 ★ 有符号数加法 有符号数的加法分成两种情况:同号和异号。 1. 如果两个数同号,则执行绝对值加法,如果两个数为非负数,则结果为非负数;如果两个数都是负数,则结果也为负数。...
阅读全文
大整数算法[07] 绝对值减法
摘要:★ 引子 最近两个星期一直在折腾,主机从 Windows 换到了 Linux,工作环境从实体机转移到虚拟机中。当然目的只有一个,那就是充分发挥 Linux 和虚拟机的优势来提高自己的工作效率。俗话说得好:磨刀不误砍柴工,花费一些时间来折腾升级还是有必要的,有空的话可以聊聊相关经验,如果你想急于...
阅读全文