在1976年之前,全部的加密方法都是同一种模式:加密、解密使用同一种算法。在交互数据的时候,彼此通讯的双方就必须将规则告诉对方,不然无法解密。这种加密与解密使用同一规则的加密方式被称为对称加密算法。那么加密和解密的规则(简称密钥)的保护就显得尤为重要,传递密钥的风险也一直是个隐患。
直到1976年,两位美国计算机学家:迪菲(W.Diffie)、赫尔曼(M.Hellman)提出了一种崭新构思,能够在不直接传递密钥的状况下完成密钥交换,开创了密码学研究的新方向。这就是“迪菲赫尔曼密钥交换”算法,其仍然是一种对称加密算法,只是密钥再也不须要传递。交换原理以下图所示:
算法
对于两个互质的正整数m、n,m^φ(n) mod n ≡ 1
当m<n时不难推导出:m^(k*φ(n)) mod n ≡ 1
进一步获得:m^(k*φ(n)+1) mod n ≡ m安全
基于此还须要理解一个概念,模反元素:网络
若是两个正整数e和x互质,那么必定能够找到整数d,使得 e*d-1 被x整除。那么d就是e对于x的“模反元素”
即e*d mod x ≡ 1
等同于 e*d ≡ k*x + 1,k为正整数函数
敲黑板!!!关键来了,上面两个转换的结果一碰撞,Duang!就碰出了咱们RSA的核心算法:学习
当e与φ(n)互质时,m^(e*d) mod n ≡ m加密
鸡不鸡冻,开不开森!还有点迷糊?不要紧,来继续:设计
假设咱们对m进行加密传输
加密:m^e mod n = c,
解密:c^d mod n = m^(e*d) mod n = mcdn
上述过程当中,n+e就是RSA中的公钥,n+d就是RSA中的私钥,c是加密后的密文。blog
总共生成6个数字:p一、p二、n、φ(n)、e、dip
除了公钥用到了n和e 其他的4个数字是不公开的。 目前破解RSA获得私钥d的思路以下:
后面我会继续对iOS证书签名相关原理进行分析,同时把常见的加密算法作一下梳理和比较,并附上每种算法在iOS中的代码实现。欢迎一块儿交流学习心得~