写在最前面,开启我的信安数学基础专栏。
最近的科研(搬砖)与安全外包算法相关,里面用到了很多信安数学基础的内容,主要是乘法循环群,同态加密等,又勾起了我对信安数学的强烈兴趣(其实是有些内容忘了)。于是,抱起陈恭亮老师的这本书,再来一遍。在草稿纸上写证明,高中时候解数学大题的快感又回来了hh。
本人非数学专业,只是专业课里有这个,当时学的算不错,现在也就是分享下自己总结的方法等,如有错误,敬请各位大佬指正。
没有将所有定理都进行证明,只证了个别,想深入学习原理的友友请转向陈恭亮老师课本。
或许这个博客能救期末抱佛脚的友友hh,刷完例题应该问题不大,觉得有用的友友可以点个赞~
1.1 整除的概念,欧几里得除法
整除定义
设整数a和b,且a ≠ 0,如果存在整数k使得b=ak, 那么就说a整除b(或b能被a整除),记作a|b,或者说b是a的倍数。
比如 2 | 6, 3 | 9。
欧几里得除法
例题
设b = 7, 写出最小非负余数,最小正余数,最大非正余数,最大负余数,绝对值最小余数。
最小非负余数: r = 0, 1, 2, 3, 4, 5, 6
最小正余数: r = 1, 2, ,3 4, 5, 6, 7
最大非正余数: r = 0, -1, -2, -3, -4, -5, -6
最大负余数: r = -1, -2, -3, -4, -5, -6, -7
绝对值最小余数: r = -3, -2, -1, 0, 1, 2, 3
如果b = 8,那么绝对值最小余数应该是 r = -4, -3, -2, -1, 0, 1, 2, 3或 r = -3, -2, -1, 0, 1, 2, 3, 4。
1.2 整数的表示
例题--进制转换
将(642)_{10}表示为二进制
逐次运用欧几里得除法,除数"2"不变
将余数从下往上写就是答案。 1010000010
1.3 最大公因数与广义欧几里得除法
这个定理很重要,后续的辗转相除法求两个数的最大公因数要用的,思想就是把求两个较大的数的公因数转换为求两个较小的数的公因数。
例题-最大公因数
求gcd(132,108)
也就是一步步把(132,108)转化为了(24,12)的最大公因数,肉眼就能看出来了。
求gcd(1180,482)
同样的方法,可以自己算一算哦。
answer is 2。
扩展的欧几里得除法
定理:设a, b∈Z+, 则存在m, n∈Z, 使得gcd(a,b)=ma+nb。
特别a, b为素数时gcd(a,b)=1,存在 ma+nb=1。
利用该方法我们可以求密码学方程ax+by=d的解,这里d= (a,b)。
例题-密码学方程ax+by=d的解
求 132x + 108y = 12的解
第一步,当然是看看(132,108)它是不是等于12了。
前边已经算过了,这里不赘述了。
要求x,y,实际上就是要求12这个数咋用132和108线性表示出来。
12在哪出现?蓝色的地方。
替换完后,右边有108和24,108是我们目标方程里有的,所以不用换了。把24换掉,24在哪出现?绿色的地方。
咔咔一顿替换完后,等式右边就剩下108和132这两数了,目标达成,x对应-4,y对应5。
设a=-169,b=121求整数s,t 使得sa+tb=(a,b)
1.4 整除的进一步性质及最小公倍数
定理:若a,b是两个正整数,则 [a,b] = \frac{a\cdot b}{(a,b)}。
这个定理把最小公倍数和最大公因数联系起来了。
书里边还有几个定理,也比较有意思,但是目前用的不咋多,我这就不列举了。
不定方程
例题-不定方程
求7x+4y=100的整数解
1.5 素数 算术基本定理
这比较重要的就是算数基本定理,然后就是n的标准分解式。