RSA算法原理

RSA 简介


RSA是一种非对称性加密算法,现在算是最具有影响力的算法,简单来说RSA运用了"一个大整数进行因式分解具备一定的难度"这个数学知识来进行加密,对一个极大整数做因式分解越难,那么想要破解加密过后的密码就越难。在讲RSA算法之前,先要学习几个知识点,下面会一一讲解。

整数因子

如果一个整数N能被负N到N之间(包括负N和N)中的整数整除,那么这个数就是这个整数的整数因子

举个栗子:求4的因子
能将4整除的有-4,-1,-2,1,2,4 那么4的因子就是 {-4,-1,-2,1,2,4 }

公因子

一个整数的因子集合A和另一个整数的因子集合B存在交集(A∩B),那么这个交集里面的元素就是这两个整数的公因子

也举个栗子:求4和6的公因子。
上面已经算出了4的因子集合(A),即{-4,-1,-2,1,2,4 },6也可以算出来,这里直接给出答案,6的因子集合(B)
是{-6,-3,-2,-1,1,2,3,6}
那么A和B的交集(A∩B)C={-2,-1,1,2},集合C就是4和6的公因子

互质关系

如果两个整数除了1以外没有其它公因子,那么我们就称这两个整数有互质关系(不考虑公因子为负数的情况)

例子:证明9和10是否是互质关系。
首先,先要求出9和10的公因子,这里不进行一步步计算,看官可以通过上述的知识点自己算算,看是否与下面数据相同 9的因子集合A为{-9,-3,-1,1,3,9}
10的因子集合B为{-10,-5,-2,-1,1,2,5,10}
那么9和10的公因子A∩B={-1,1},而证明互质关系不考虑负数的情况,所以公因子为{1}
所以9和10是互质关系。
(PS:两个素数(质数)都是可以为互质关系)

欧拉函数

欧拉函数可以用来解决"给定任意一个整数N,那么小于N或等于N的整数中,有几个和N是互质关系",可表示为φ(N)

例子:φ(8)是多少
在小于或等于8之中,只有1,3,5,7和8是互质关系,所以φ(8)={1,3,5,7}=4

这里只需要知道几个知识点就够了,没必要把欧拉函数全部给理解了。
第一个:
当整数N为素数(质数)的时候,那么φ(N)=N-1。 为什么呢?因为素数的定义是除1和自身以外,不存在因子。所以N除自己以外,都是和N是互质关系。即N-1。

第二个是:如果这个整数N可以用两个素数相乘得到,即N=P1*P2,那么φ(N)=φ(P1 * P2)=φ(P1)φ(P2),证明这个式子需要用到“中国剩余定理”,这里不进行证明,知道就行。

欧拉定理

当两个整数A,B是互质关系的时候,那么A的φ(A)次方除于N除余必然是一

图片来自百度百科

例子:求9和10
φ(9)=6;
φ(10)=4;
那么9的φ(9)次方为 9^6=531441,然后531441除于10为53144余1。

这个公式也不进行证明,只需要记住结论就好了。

模反元素

如果两个整数A和B为互质的话,必然存在一个C,使得AC除于B余1,那么C就是A的模反元素

在这里插入图片描述

例如:证明整数5和11,5的模反元素是9
因为5*9-1为44,而44正可以给11整除,所以9是5的模反元素。

到这里,基本知识点就学完了,下面学习RAS的加密过程

1.选取两个较大的质数,求乘积N

这里我选取41和43,那么乘积N=41*43=1763,N的长度就是密钥的长度,1763转换成二进制是11011100011,11位,所以密钥的长度就是11位。
(PS:一般来说RSA密钥的长度为1024位,重要的话为2048位)

2.算出φ(N)

因为N是由两个质数相乘得到,根据上面欧拉函数的知识点,那么φ(N)=φ(P1P2)=(41-1)(43-1)=40*42=1680

3.选取一个e,e的范围是1<e<φ(N),并且和φ(N)是互质关系

这里选取17作为e(PS:一般1024位或2048位会用65537作为e)

4.算出e和φ(N),e的模反元素,也就是要满足 ed ≡ 1 (mod φ(n))

把上面公式转换下可以变成ed-1=φ(n)k (d为模反元素,k为φ(n)的倍数)
然后转化成一元二次方程式:ed+φ(n)
k =1,可以通过扩展欧几里得算法来算出d和k,扩展欧几里得算法是辗转相除法得进化版。
我这里使用C语言求出d和k

C语言

这里得出<kbd>d=593,k= - 6</kbd>,所以593就是e和.φ(N),e的模反元素。 到这里,全部基础计算就结束了,接下来,是使用这些基础来进行RSA的加密。

挑选作为私钥和公钥的数字.

在RSA中,d(e的模反元素)是至关重要的,如果d暴露了,那么RSA的破解就变得很容易了,这里选用(N,d)作为私钥,(N,e)作为公钥 公钥:(1763,17) 私钥:(1763,593)

那么在知道公钥N和e的情况下,能否算出d呢?

上面含有d的公式是<kbd>ed=φ(N)k+1,那么,想要知道d,那么必须知道φ(N),而φ(N)=φ(P1*P2)
这里有两种情况。

1.知道P1和P2

这种情况不太可能,除非是参与了设计RSA加密的人员,emmmm那么问题来了,自己破解自家的加密?而且一般来说,设计P1和P2的数会很大,而不是像我举例的41和43那样。


图来自阮一峰的文章

2.将N因式分解(即暴力破解)

这里就解释了为什么RSA会运用"一个大整数进行因式分解具备一定的难度"这种问题来进行加密,如果要破解的话,没有一台计算力强的机器是不可能破解的。

加密公式 C=M^e (mod N) 或者是 C=M ^E-NK

m代表明文,e和N是我们上面求出来的,K是N的倍数,目的就是要算出c

解密公式 C^d ≡ M (mod N)或者 M=C ^d-NK

C是加密过后的数字,N和d在上面已经求出,K是N的倍数,目的就是要算出M

至于为什么加密要采用这条公式,我也不太清楚,如果有人知道,望告知,而解密公式为什么可以正确的算出M呢?这个可以看下面阮一锋大大的文章。

参考文章:

http://www.ruanyifeng.com/blog/2013/06/rsa_algorithm_part_one.html
http://www.ruanyifeng.com/blog/2013/07/rsa_algorithm_part_two.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,294评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,493评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,790评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,595评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,718评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,906评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,053评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,797评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,250评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,570评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,711评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,388评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,018评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,796评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,023评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,461评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,595评论 2 350

推荐阅读更多精彩内容

  • RSA介绍 RSA产生的原因:这要从密码学的发展史说起,相传在古罗的凯撒大帝为了防止敌方截获自己的信息,自己设计了...
    眷卿三世阅读 742评论 0 0
  • 前言 RSA算法是现今使用最广泛的公钥密码算法,也是号称地球上最安全的加密算法。本文主要参考了参考资料中的文章,加...
    卖糖果的小傻嘟阅读 766评论 0 0
  • 上一次,我介绍了一些数论知识。 有了这些知识,我们就可以看懂RSA算法。这是目前地球上最重要的加密算法。 六、密钥...
    中v中阅读 1,266评论 0 1
  • 一:RSA 数学理论基础 1. 互质关系 如果两个正整数,除了1以外,没有其他公因子,我们就称这两个数是互质关系(...
    传说中的汽水枪阅读 1,663评论 0 3
  • 6月11日,我满23岁。 我没有呼朋引伴,让大家帮我庆祝。 没有热情了。 自己一个人过了。 而且,我自己几乎要给忘...
    Orange_Orchard阅读 429评论 0 2