RSA算法及其加解密原理
1.什么是RSA加密:
类型:非对称加密,通俗说就是加解密的密钥不同
原理:两个大素数相乘容易,但想要对其乘积进行因式分解却极其困难
公钥:加密明文使用的叫公钥。因为对大素数因式分解很困难,因此可以将乘积公开作为加密密钥,即KU=(e,n)
私钥:解密明文使用的叫私钥,即KR=(d,n)
2.一些字母表示:
(1) n=p*q:拆分大数n为两个大素数p和q
(2) φ(n)=(p-1)(q-1):欧拉函数。
(3) e:随机选择一个的整数(可负),条件是1<e<φ(n),且e与φ(n) 互质
(4) d :由e和φ生成,关系是ed ≡ 1 mod φ(n),读作ed同余于1模φ(n)
(5) 明文:要加密的东西,记作m
(6) 密文:要解密的东西,记作c
3.一些需要了解的数论基础:
(1) 欧拉函数:对于一个正整数n,小于n且和n互质的正整数的个数,记做φ(n),φ(1)被定义为1 。显然,对于质数p,q,满足φ(n) =(p-1)(q-1)
(2) 同余:a≡b (mod m),顾名思义是a,b对m取模的值相等,即余数相等
(3)同余的一些性质:
[1]: 若a≡b (mod m),则a=km+b,或a-b=km,k为整数。因为同余,所以显然差值是m(被模数)的整数倍。
[2]:运算法则:(为方便观看,以下mod写为%,绝对不是懒得打)
(a+b)%p=(a%p+b%p)%p
(a*b)%p=(a%p*b%p)%p
(ab)%p=(a%p)b %p
[3]: