加密算法总的可以分为两种,对称加密与非对称加密算法。
RSA是1977年三位数学家Rivest,Shamir,Adleman设计的一种非对称的加密算法,该算法破解的关键在于寻找大数的两个质数因子。大数长度越大,破解难度也就越大,目前768位的密钥已被破解,安全性建立在公钥长度足够的基础上,如iOS9中引入的新特性ATS中对公钥长度就有明确的要求,至少为2048位。
“RSA是第一个也是目前唯一一个既能用于密钥交换又能用于数字签名的算法。
1.RSA算法
涉及的定理概念
1>.欧拉定理
欧拉函数φ(n): 小于等于n的正整数中与n构成互质关系的数的数目
条件: 如果两个正整数a和n互质,则:
2> 费马小定理
3>模反元素
密钥生成过程
1 随机选择两个大质数p, q;
2 n = p * q, φ(n)=(p-1)(q-1);
3 e 是随机小于φ(n)的正整数,且与φ(n)互质。
4 计算e对于φ(n)的模反元素d, ed = 1 (mod φ(n)) —> ed -1 = k φ(n)
5 公钥(n,e) 私钥(n, d)
过程与证明
http://www.ruanyifeng.com/blog/2013/07/rsa_algorithm_part_two.html
常见的对称加密算法
from SSL常见加密算法
- DES(Data Encryption Standard):数据加密标准,速度较快,适用