本文主要介绍RSA的数学原理、以及RSA的代码演示
引子
密码学
是指研究信息加密、破解密码的技术科学。最早可以追溯到追溯到2000年前。而当今的密码学是以数学为基础的。
密码学发展史
-
在1976年以前,所有的加密方法都是同一种模式:
加密、解密使用同一种算法
。在交互数据的时候,彼此通信的双方就必须将规则告诉对方,否则没法解密。那么加密和解密的规则(简称密钥
),它保护就显得尤其重要。传递密钥就成为了最大的隐患。这种加密方式被成为对称加密算法
(symmetric encryption algorithm) -
1976年,两位美国计算机学家 迪菲(W.Diffie)、赫尔曼( M.Hellman ) 提出了一种崭新构思,可以在不直接传递密钥的情况下,完成密钥交换。这被称为“
迪菲赫尔曼密钥交换
”算法。开创了密码学研究的新方向
RSA数学原理
上世纪70年代产生的一种加密算法。其加密方式比较特殊,需要两个密钥:公开密钥简称公钥
(publickey)和私有密钥简称私钥
(privatekey)。公钥加密,私钥解密;私钥加密,公钥解密
。这个加密算法被称为的RSA
离散对数问题
现在想实现这一种 加密容易,但是破解很难
的加密算法,利用数学运算,如mod取模
,有如下方案:
-
用
质数做模数
,例如17
-
找一个比17小的数作为n次方的基数,例如
3
-
找出
基数的n次方 mod 质数 = 固定的数
,求n
3^? mod 17 = 12,此时的`?`是多少呢?(mod -> 求余数,在西方被称为时钟算数)
从下方的规律中可以看出,3的1次方~16次方 mod 17 得到的结果都是不同的,且结果分布在 [1,17)上。此时将 3
称为 17
的原根
作为一个开发者,有一个学习的氛围跟一个交流圈子特别重要,这是一个我的iOS开发交流圈:130 595 548,不管你是小白还是大牛都欢迎入驻 ,让我们一起进步,共同发展!(群内会免费提供一些群主收藏的免费学习书籍资料以及整理好的几百道面试题和答案文档!)
所以根据图中所示,? 可能是13,可能是29等。即从这里可以看出:通过 12 去反推3的?次方是很难的。如果质数加大,反推的难度也会加大。
质数:公约数只有1和自己,其中2是一个特殊质数
欧拉函数φ(读 fai)
定义
任意给定正整数n,请问在小于等于n的正整数之中,有多少个与n构成互质
关系?计算这个值的方式就叫做欧拉函数
,使用Φ(n)
表示
互质关系
如果两个正数,除了1
以外,没有其他公因数
,就称这两个数是互质关系(comprime)
欧拉函数特点
-
1、当
n是质数
时,Φ(n) = n - 1