导航:首页 > 文档加密 > rsa是对称加密算法么

rsa是对称加密算法么

发布时间:2023-02-09 13:40:36

⑴ rsa加密算法是对称加密算法吗

不是,他是非对称加密,用不同的密钥进行加/解密一般就是非对称的。

⑵ RSA算法详解

总括: 本文详细讲述了RSA算法详解,包括内部使用数学原理以及产生的过程。

相濡以沫。到底需要爱淡如水。

之前写过一篇文章 SSL协议之数据加密过程 ,里面详细讲述了数据加密的过程以及需要的算法。SSL协议很巧妙的利用对称加密和非对称加密两种算法来对数据进行加密。这篇文章主要是针对一种最常见的非对称加密算法——RSA算法进行讲解。其实也就是对私钥和公钥产生的一种方式进行描述。首先先来了解下这个算法的历史:

RSA是1977年由 罗纳德·李维斯特 (Ron Rivest)、 阿迪·萨莫尔 (Adi Shamir)和 伦纳德·阿德曼 (Leonard Adleman)一起提出的。当时他们三人都在 麻省理工学院 工作。RSA就是他们三人姓氏开头字母拼在一起组成的。

但实际上,在1973年,在英国政府通讯总部工作的数学家 克利福德·柯克斯 (Clifford Cocks)在一个内部文件中提出了一个相同的算法,但他的发现被列入机密,一直到1997年才被发表。

所以谁是RSA算法的发明人呢?不好说,就好像贝尔并不是第一个发明电话的人但大家都记住的是贝尔一样,这个地方我们作为旁观者倒不用较真,重要的是这个算法的内容:

RSA算法用到的数学知识特别多,所以在中间介绍这个算法生成私钥和公钥的过程中会穿插一些数学知识。生成步骤如下:

随意选择两个大的质数p和q,p不等于q,计算N=p*q;

什么是质数?我想可能会有一部分人已经忘记了,定义如下:

比如2,3,5,7这些都是质数,9就不是了,因为3*3=9了

r = φ(N) = φ(p)φ(q) = (p-1)(q-1) 。

这里的数学概念就是什么是欧拉函数了,什么是欧拉函数呢?

欧拉函数 的定义:

互质 的定义:

例如: φ(8) = 4 ,因为 1,3,5,7 均和 8 互质。

推导欧拉函数:

(1)如果 n = 1 , φ(1) = 1 ;(小于等于1的正整数中唯一和1互质的数就是1本身);

(2)如果 n 为质数, φ(n) = n - 1 ;因为质数和每一个比它小的数字都互质。比如5,比它小的正整数1,2,3,4都和他互质;

(3) 如果 n 是 a 的 k 次幂,则 φ(n) = φ(a^k) = a^k - a^(k-1) = (a-1)a^(k-1) ;

(4) 若 m , n 互质,则 φ(mn) = φ(m)φ(n)

证明: 设 A , B , C 是跟 m , n , mn 互质的数的集,据 中国剩余定理 (经常看数学典故的童鞋应该了解,剩余定理又叫韩信点兵,也叫孙子定理), A * B 和 C 可建立双射一一对应)的关系。(或者也可以从初等代数角度给出 欧拉函数积性的简单证明 ) 因此的φ(n)值使用 算术基本定理 便知。(来自维基网络)

选择一个小于r并与r互质的整数e,求得e关于r的模反元素,命名为 d ( ed = 1(mod r) 模反元素存在,当且仅当e与r互质), e 我们通常取65537。

模反元素:

比如 3 和 5 互质, 3 关于 5 的模反元素就可能是2,因为 3*2-1=5 可以被5整除。所以很明显模反元素不止一个,2加减5的整数倍都是3关于5的模反元素 {...-3, 2,7,12…} 放在公式里就是 3*2 = 1 (mod 5)

上面所提到的欧拉函数用处实际上在于欧拉定理:

欧拉定理:

欧拉定理就可以用来证明模反元素必然存在。

由模反元素的定义和欧拉定理我们知道, a 的 φ(n) 次方减去1,可以被n整除。比如,3和5互质,而 5 的欧拉函数 φ(5) 等于4,所以 3 的 4 次方 (81) 减去1,可以被 5 整除( 80/5=16 )。

小费马定理:

此时我们的 (N , e) 是公钥, (N, d) 为私钥,爱丽丝会把公钥 (N, e) 传给鲍勃,然后将 (N, d) 自己藏起来。一对公钥和私钥就产生了,然后具体的使用方法呢?请看: SSL协议之数据加密过程详解

我们知道像RSA这种非对称加密算法很安全,那么到底为啥子安全呢?
我们来看看上面这几个过程产生的几个数字:

N 和 e 我们都会公开使用,最为重要的就是私钥中的 d , d 一旦泄露,加密也就失去了意义。那么得到d的过程是如何的呢?如下:

所以得出了在上篇博客说到的结论,非对称加密的原理:

将a和b相乘得出乘积c很容易,但要是想要通过乘积c推导出a和b极难。即对一个大数进行因式分解极难

目前公开破译的位数是768位,实际使用一般是1024位或是2048位,所以理论上特别的安全。

RSA算法的核心就是欧拉定理,根据它我们才能得到私钥,从而保证整个通信的安全。

⑶ 加密基础知识二 非对称加密RSA算法和对称加密

上述过程中,出现了公钥(3233,17)和私钥(3233,2753),这两组数字是怎么找出来的呢?参考 RSA算法原理(二)
首字母缩写说明:E是加密(Encryption)D是解密(Decryption)N是数字(Number)。

1.随机选择两个不相等的质数p和q。
alice选择了61和53。(实际应用中,这两个质数越大,就越难破解。)

2.计算p和q的乘积n。
n = 61×53 = 3233
n的长度就是密钥长度。3233写成二进制是110010100001,一共有12位,所以这个密钥就是12位。实际应用中,RSA密钥一般是1024位,重要场合则为2048位。

3.计算n的欧拉函数φ(n)。称作L
根据公式φ(n) = (p-1)(q-1)
alice算出φ(3233)等于60×52,即3120。

4.随机选择一个整数e,也就是公钥当中用来加密的那个数字
条件是1< e < φ(n),且e与φ(n) 互质。
alice就在1到3120之间,随机选择了17。(实际应用中,常常选择65537。)

5.计算e对于φ(n)的模反元素d。也就是密钥当中用来解密的那个数字
所谓"模反元素"就是指有一个整数d,可以使得ed被φ(n)除的余数为1。ed ≡ 1 (mod φ(n))
alice找到了2753,即17*2753 mode 3120 = 1

6.将n和e封装成公钥,n和d封装成私钥。
在alice的例子中,n=3233,e=17,d=2753,所以公钥就是 (3233,17),私钥就是(3233, 2753)。

上述故事中,blob为了偷偷地传输移动位数6,使用了公钥做加密,即6^17 mode 3233 = 824。alice收到824之后,进行解密,即824^2753 mod 3233 = 6。也就是说,alice成功收到了blob使用的移动位数。

再来复习一下整个流程:
p=17,q=19
n = 17 19 = 323
L = 16 18 = 144
E = 5(E需要满足以下两个条件:1<E<144,E和144互质)
D = 29(D要满足两个条件,1<D<144,D mode 144 = 1)
假设某个需要传递123,则加密后:123^5 mode 323 = 225
接收者收到225后,进行解密,225^ 29 mode 323 = 123

回顾上面的密钥生成步骤,一共出现六个数字:
p
q
n
L即φ(n)
e
d
这六个数字之中,公钥用到了两个(n和e),其余四个数字都是不公开的。其中最关键的是d,因为n和d组成了私钥,一旦d泄漏,就等于私钥泄漏。那么,有无可能在已知n和e的情况下,推导出d?
(1)ed≡1 (mod φ(n))。只有知道e和φ(n),才能算出d。
(2)φ(n)=(p-1)(q-1)。只有知道p和q,才能算出φ(n)。
(3)n=pq。只有将n因数分解,才能算出p和q。
结论:如果n可以被因数分解,d就可以算出,也就意味着私钥被破解。
可是,大整数的因数分解,是一件非常困难的事情。目前,除了暴力破解,还没有发现别的有效方法。维基网络这样写道:"对极大整数做因数分解的难度决定了RSA算法的可靠性。换言之,对一极大整数做因数分解愈困难,RSA算法愈可靠。假如有人找到一种快速因数分解的算法,那么RSA的可靠性就会极度下降。但找到这样的算法的可能性是非常小的。今天只有短的RSA密钥才可能被暴力破解。到2008年为止,世界上还没有任何可靠的攻击RSA算法的方式。只要密钥长度足够长,用RSA加密的信息实际上是不能被解破的。"

然而,虽然RSA的安全性依赖于大数的因子分解,但并没有从理论上证明破译RSA的难度与大数分解难度等价。即RSA的重大缺陷是无法从理论上把握它的保密性能如何。此外,RSA的缺点还有:
A)产生密钥很麻烦,受到素数产生技术的限制,因而难以做到一次一密。
B)分组长度太大,为保证安全性,n 至少也要 600bits以上,使运算代价很高,尤其是速度较慢,较对称密码算法慢几个数量级;且随着大数分解技术的发展,这个长度还在增加,不利于数据格式的标准化。因此, 使用RSA只能加密少量数据,大量的数据加密还要靠对称密码算法

加密和解密是自古就有技术了。经常看到侦探电影的桥段,勇敢又机智的主角,拿着一长串毫无意义的数字苦恼,忽然灵光一闪,翻出一本厚书,将第一个数字对应页码数,第二个数字对应行数,第三个数字对应那一行的某个词。数字变成了一串非常有意义的话:
Eat the beancurd with the peanut. Taste like the ham.

这种加密方法是将原来的某种信息按照某个规律打乱。某种打乱的方式就叫做密钥(cipher code)。发出信息的人根据密钥来给信息加密,而接收信息的人利用相同的密钥,来给信息解密。 就好像一个带锁的盒子。发送信息的人将信息放到盒子里,用钥匙锁上。而接受信息的人则用相同的钥匙打开。加密和解密用的是同一个密钥,这种加密称为对称加密(symmetric encryption)。

如果一对一的话,那么两人需要交换一个密钥。一对多的话,比如总部和多个特工的通信,依然可以使用同一套密钥。 但这种情况下,对手偷到一个密钥的话,就知道所有交流的信息了。 二战中盟军的情报战成果,很多都来自于破获这种对称加密的密钥。

为了更安全,总部需要给每个特工都设计一个不同的密钥。如果是FBI这样庞大的机构,恐怕很难维护这么多的密钥。在现代社会,每个人的信用卡信息都需要加密。一一设计密钥的话,银行怕是要跪了。

对称加密的薄弱之处在于给了太多人的钥匙。如果只给特工锁,而总部保有钥匙,那就容易了。特工将信息用锁锁到盒子里,谁也打不开,除非到总部用唯一的一把钥匙打开。只是这样的话,特工每次出门都要带上许多锁,太容易被识破身份了。总部老大想了想,干脆就把造锁的技术公开了。特工,或者任何其它人,可以就地取材,按照图纸造锁,但无法根据图纸造出钥匙。钥匙只有总部的那一把。

上面的关键是锁和钥匙工艺不同。知道了锁,并不能知道钥匙。这样,银行可以将“造锁”的方法公布给所有用户。 每个用户可以用锁来加密自己的信用卡信息。即使被别人窃听到,也不用担心:只有银行才有钥匙呢!这样一种加密算法叫做非对称加密(asymmetric encryption)。非对称加密的经典算法是RSA算法。它来自于数论与计算机计数的奇妙结合。

1976年,两位美国计算机学家Whitfield Diffie 和 Martin Hellman,提出了一种崭新构思,可以在不直接传递密钥的情况下,完成解密。这被称为"Diffie-Hellman密钥交换算法"。这个算法启发了其他科学家。人们认识到,加密和解密可以使用不同的规则,只要这两种规则之间存在某种对应关系即可,这样就避免了直接传递密钥。这种新的加密模式被称为"非对称加密算法"。

1977年,三位数学家Rivest、Shamir 和 Adleman 设计了一种算法,可以实现非对称加密。这种算法用他们三个人的名字命名,叫做RSA算法。从那时直到现在,RSA算法一直是最广为使用的"非对称加密算法"。毫不夸张地说,只要有计算机网络的地方,就有RSA算法。

1.能“撞”上的保险箱(非对称/公钥加密体制,Asymmetric / Public Key Encryption)

数据加密解密和门锁很像。最开始的时候,人们只想到了那种只能用钥匙“锁”数据的锁。如果在自己的电脑上自己加密数据,当然可以用最开始这种门锁的形式啦,方便快捷,简单易用有木有。

但是我们现在是通信时代啊,双方都想做安全的通信怎么办呢?如果也用这种方法,通信就好像互相发送密码保险箱一样…而且双方必须都有钥匙才能进行加密和解密。也就是说,两个人都拿着保险箱的钥匙,你把数据放进去,用钥匙锁上发给我。我用同样的钥匙把保险箱打开,再把我的数据锁进保险箱,发送给你。

这样看起来好像没什么问题。但是,这里面 最大的问题是:我们两个怎么弄到同一个保险箱的同一个钥匙呢? 好像仅有的办法就是我们两个一起去买个保险箱,然后一人拿一把钥匙,以后就用这个保险箱了。可是,现代通信社会,绝大多数情况下别说一起去买保险箱了,连见个面都难,这怎么办啊?

于是,人们想到了“撞门”的方法。我这有个可以“撞上”的保险箱,你那里自己也买一个这样的保险箱。通信最开始,我把保险箱打开,就这么开着把保险箱发给你。你把数据放进去以后,把保险箱“撞”上发给我。撞上以后,除了我以外,谁都打不开保险箱了。这就是RSA了,公开的保险箱就是公钥,但是我有私钥,我才能打开。

2.数字签名
这种锁看起来好像很不错,但是锁在运输的过程中有这么一个严重的问题:你怎么确定你收到的开着的保险箱就是我发来的呢?对于一个聪明人,他完全可以这么干:
(a)装作运输工人。我现在把我开着的保险箱运给对方。运输工人自己也弄这么一个保险箱,运输的时候把保险箱换成他做的。
(b)对方收到保险箱后,没法知道这个保险箱是我最初发过去的,还是运输工人替换的。对方把数据放进去,把保险箱撞上。
(c)运输工人往回运的时候,用自己的钥匙打开自己的保险箱,把数据拿走。然后复印也好,伪造也好,弄出一份数据,把这份数据放进我的保险箱,撞上,然后发给我。
从我的角度,从对方的角度,都会觉得这数据传输过程没问题。但是,运输工人成功拿到了数据,整个过程还是不安全的,大概的过程是这样:

这怎么办啊?这个问题的本质原因是,人们没办法获知,保险箱到底是“我”做的,还是运输工人做的。那干脆,我们都别做保险箱了,让权威机构做保险箱,然后在每个保险箱上用特殊的工具刻上一个编号。对方收到保险箱的时候,在权威机构的“公告栏”上查一下编号,要是和保险箱上的编号一样,我就知道这个保险箱是“我”的,就安心把数据放进去。大概过程是这样的:

如何做出刻上编号,而且编号没法修改的保险箱呢?这涉及到了公钥体制中的另一个问题:数字签名。
要知道,刻字这种事情吧,谁都能干,所以想做出只能自己刻字,还没法让别人修改的保险箱确实有点难度。那么怎么办呢?这其实困扰了人们很长的时间。直到有一天,人们发现:我们不一定非要在保险箱上刻规规矩矩的字,我们干脆在保险箱上刻手写名字好了。而且,刻字有点麻烦,干脆我们在上面弄张纸,让人直接在上面写,简单不费事。具体做法是,我们在保险箱上嵌进去一张纸,然后每个出产的保险箱都让权威机构的CEO签上自己的名字。然后,CEO把自己的签名公开在权威机构的“公告栏”上面。比如这个CEO就叫“学酥”,那么整个流程差不多是这个样子:

这个方法的本质原理是,每个人都能够通过笔迹看出保险箱上的字是不是学酥CEO签的。但是呢,这个字体是学酥CEO唯一的字体。别人很难模仿。如果模仿我们就能自己分辨出来了。要是实在分辨不出来呢,我们就请一个笔迹专家来分辨。这不是很好嘛。这个在密码学上就是数字签名。

上面这个签字的方法虽然好,但是还有一个比较蛋疼的问题。因为签字的样子是公开的,一个聪明人可以把公开的签字影印一份,自己造个保险箱,然后把这个影印的字也嵌进去。这样一来,这个聪明人也可以造一个相同签字的保险箱了。解决这个问题一个非常简单的方法就是在看保险箱上的签名时,不光看字体本身,还要看字体是不是和公开的字体完全一样。要是完全一样,就可以考虑这个签名可能是影印出来的。甚至,还要考察字体是不是和其他保险柜上的字体一模一样。因为聪明人为了欺骗大家,可能不影印公开的签名,而影印其他保险箱上的签名。这种解决方法虽然简单,但是验证签名的时候麻烦了一些。麻烦的地方在于我不仅需要对比保险箱上的签名是否与公开的笔迹一样,还需要对比得到的签名是否与公开的笔迹完全一样,乃至是否和所有发布的保险箱上的签名完全一样。有没有什么更好的方法呢?

当然有,人们想到了一个比较好的方法。那就是,学酥CEO签字的时候吧,不光把名字签上,还得带上签字得日期,或者带上这个保险箱的编号。这样一来,每一个保险箱上的签字就唯一了,这个签字是学酥CEO的签名+学酥CEO写上的时间或者编号。这样一来,就算有人伪造,也只能伪造用过的保险箱。这个问题就彻底解决了。这个过程大概是这么个样子:

3 造价问题(密钥封装机制,Key Encapsulation Mechanism)
解决了上面的各种问题,我们要考虑考虑成本了… 这种能“撞”门的保险箱虽然好,但是这种锁造价一般来说要比普通的锁要高,而且锁生产时间也会变长。在密码学中,对于同样“结实”的锁,能“撞”门的锁的造价一般来说是普通锁的上千倍。同时,能“撞”门的锁一般来说只能安装在小的保险柜里面。毕竟,这么复杂的锁,装起来很费事啊!而普通锁安装在多大的保险柜上面都可以呢。如果两个人想传输大量数据的话,用一个大的保险柜比用一堆小的保险柜慢慢传要好的多呀。怎么解决这个问题呢?人们又想出了一个非常棒的方法:我们把两种锁结合起来。能“撞”上的保险柜里面放一个普通锁的钥匙。然后造一个用普通的保险柜来锁大量的数据。这样一来,我们相当于用能“撞”上的保险柜发一个钥匙过去。对方收到两个保险柜后,先用自己的钥匙把小保险柜打开,取出钥匙。然后在用这个钥匙开大的保险柜。这样做更棒的一个地方在于,既然对方得到了一个钥匙,后续再通信的时候,我们就不再需要能“撞”上的保险柜了啊,在以后一定时间内就用普通保险柜就好了,方便快捷嘛。

以下参考 数字签名、数字证书、SSL、https是什么关系?
4.数字签名(Digital Signature)
数据在浏览器和服务器之间传输时,有可能在传输过程中被冒充的盗贼把内容替换了,那么如何保证数据是真实服务器发送的而不被调包呢,同时如何保证传输的数据没有被人篡改呢,要解决这两个问题就必须用到数字签名,数字签名就如同日常生活的中的签名一样,一旦在合同书上落下了你的大名,从法律意义上就确定是你本人签的字儿,这是任何人都没法仿造的,因为这是你专有的手迹,任何人是造不出来的。那么在计算机中的数字签名怎么回事呢?数字签名就是用于验证传输的内容是不是真实服务器发送的数据,发送的数据有没有被篡改过,它就干这两件事,是非对称加密的一种应用场景。不过他是反过来用私钥来加密,通过与之配对的公钥来解密。
第一步:服务端把报文经过Hash处理后生成摘要信息Digest,摘要信息使用私钥private-key加密之后就生成签名,服务器把签名连同报文一起发送给客户端。
第二步:客户端接收到数据后,把签名提取出来用public-key解密,如果能正常的解密出来Digest2,那么就能确认是对方发的。
第三步:客户端把报文Text提取出来做同样的Hash处理,得到的摘要信息Digest1,再与之前解密出来的Digist2对比,如果两者相等,就表示内容没有被篡改,否则内容就是被人改过了。因为只要文本内容哪怕有任何一点点改动都会Hash出一个完全不一样的摘要信息出来。

5.数字证书(Certificate Authority)
数字证书简称CA,它由权威机构给某网站颁发的一种认可凭证,这个凭证是被大家(浏览器)所认可的,为什么需要用数字证书呢,难道有了数字签名还不够安全吗?有这样一种情况,就是浏览器无法确定所有的真实服务器是不是真的是真实的,举一个简单的例子:A厂家给你们家安装锁,同时把钥匙也交给你,只要钥匙能打开锁,你就可以确定钥匙和锁是配对的,如果有人把钥匙换了或者把锁换了,你是打不开门的,你就知道肯定被窃取了,但是如果有人把锁和钥匙替换成另一套表面看起来差不多的,但质量差很多的,虽然钥匙和锁配套,但是你却不能确定这是否真的是A厂家给你的,那么这时候,你可以找质检部门来检验一下,这套锁是不是真的来自于A厂家,质检部门是权威机构,他说的话是可以被公众认可的(呵呵)。
同样的, 因为如果有人(张三)用自己的公钥把真实服务器发送给浏览器的公钥替换了,于是张三用自己的私钥执行相同的步骤对文本Hash、数字签名,最后得到的结果都没什么问题,但事实上浏览器看到的东西却不是真实服务器给的,而是被张三从里到外(公钥到私钥)换了一通。那么如何保证你现在使用的公钥就是真实服务器发给你的呢?我们就用数字证书来解决这个问题。数字证书一般由数字证书认证机构(Certificate Authority)颁发,证书里面包含了真实服务器的公钥和网站的一些其他信息,数字证书机构用自己的私钥加密后发给浏览器,浏览器使用数字证书机构的公钥解密后得到真实服务器的公钥。这个过程是建立在被大家所认可的证书机构之上得到的公钥,所以这是一种安全的方式。

常见的对称加密算法有DES、3DES、AES、RC5、RC6。非对称加密算法应用非常广泛,如SSH,
HTTPS, TLS,电子证书,电子签名,电子身份证等等。
参考 DES/3DES/AES区别

⑷ 不属于rsa算法的攻击方法是

不属于rsa算法的攻击方法是
公钥密码包含两个密钥,加密密钥和解密密钥,其加密密钥是可以公开的,解密密钥是不能公开的。公钥密码自1976年提出这个思想后就不断发展,其一般是基于数学上的一些困难问题所建造的,如rsa基于大整数分解的困难问题建立的,椭圆曲线是基于椭圆曲线上的离散对数困难问题建立的,elgamal上的DH密钥交换是基于有限域的离散对数困难问题建立的,格密码是基于格中困难问题的难解程度建立的等等。但是随着科技的发展,在一定条件下,有些困难问题变得不在困难,如rsa密码体系参数的选取,选取的bit长度随着计算机的发展变得越来越长,这提高了存储空间和计算时间,所以研究新型的公钥体系变得越来越火热。下面将会介绍RSA的基本原理和由于参数选取不当造成的攻击手段。
一、RSA算法
RSA属于非对称加密算法,因为RSA使用了两个不同的密钥分别用于加密和解密,这两个密钥称之为公私钥对,其中公钥用于加密,且公钥是公开的,而私钥用于解密,私钥是私有的。
RSA的计算过程如下:
找到两个大素数p和q,计算出n = pq;
计算出φ(n) = (p-1)*(q-1),选择一个e,满足1 < e <φ(n),且gcd(φ(n), e) = 1;
计算出d,使得d满足ed % φ(n) = 1;
此时,已经生成了公私钥对,其中(e, n)为公钥,(d, n)为私钥。
对于明文M,

⑸ 对称加密算法和非对称加密算法

常见的对称加密算法包括瑞士的国际数据加密算法(International Data Encryption
Algorithm,IDEA)和美国的数据加密标准(Date Encryption Standard,DES)。
DES是一种迭代的分组密码,明文和密文都是64位,使用一个56位的密钥以及附加的8位奇偶校验位。攻击DES的主要技术是穷举法,由于DES的密钥长度较短,为了提高安全性,就出现了使用112位密钥对数据进行三次加密的算法(3DES),即用两个56位的密钥K1和K2,发送方用K1加密,K2解密,再使用K1加密;接收方则使用K1解密,K2加密,再使用K1解密,其效果相当于将密钥长度加倍。
IDEA是在DES的基础上发展起来的,类似于3DES。IDEA的明文和密文都是64位,密钥长度为128位。

非对称加密算法也称为公钥加密算法,是指加密密钥和解密密钥完全不同,其中一个为公钥,另一个为私钥,并且不可能从任何一个推导出另一个。它的优点在于可以适应开放性的使用环境,可以实现数字签名与验证。
最常见的非对称加密算法是RSA,该算法的名字以发明者的名字命名:Ron Rivest,AdiShamir 和Leonard Adleman。RSA算法的密钥长度为512位。RSA算法的保密性取决于数学上将一个大数分解为两个素数的问题的难度,根据已有的数学方法,其计算量极大,破解很难。但是加密/解密时要进行大指数模运算,因此加密/解密速度很慢,主要用在数字签名中。
用公钥进行加密,用私钥进行解密

⑹ RSA和AES区别

先了解下AES和RSA的区别,前者属于 对称加密 ,后者属于 非对称加密 。

1、对称加密

对称加密就是加密和解密使用同一个密钥。

用数学公示表示就是:

▲加密:Ek(P) = C

▲解密:Dk(C) = P

这里E表示加密算法,D表示解密算法,P表示明文,C表示密文。

是不是看起来有点不太容易理解?看下图:

看过间谍局的知友们一定知道电台和密码本的功能。潜伏里面孙红雷通过电台收听到一堆数字,然后拿出密码本比对,找到数字对应的汉字,就明白上级传达的指令。而军统的监听台没有密码本,只看到一堆没有意义的数字,这就是对称算法的原理。

AES就属于对称加密 ,常见的对称加密方法还有DES、3DES、Blowfish、RC2以及国密的SM4。

2、非对称加密

对称加密快而且方便,但是有个缺点——密钥容易被偷或被破解。非对称加密就可以很好的避免这个问题。

非对称算法 把密钥分成两个 ,一个自己持有叫 私钥 ,另一个发给对方,还可以公开,叫 公钥 ,用公钥加密的数据只能用私钥解开。

▲加密: E公钥(P) = C

▲解密::D私钥(C) = P

这下就不用担心密钥被对方窃取或被破解了,私钥由自己保管。

非对称加密算法核心原理其实就是设计一个数学难题,使得用公钥和明文推导密文很容易,但根据公钥、明文和密文推导私钥极其难。

RSA 就属于非对称加密,非对称加密还有Elgamal、背包算法、Rabin、D-H、ECC(椭圆曲线加密算法)以及国家商用密码SM2算法。

3、AES和RSA

AES和RSA都很安全,至少在目前的计算机体系结构下,没有任何有效的攻击方式。量子计算机时代,RSA有一定的破绽,因为利用shro's algorithm,量子计算机穷举计算质因子速度可以提高N个数量级,能够在有限的时间内破解RSA密钥。AES256至少目前并没有什么明显的漏洞。

AES作为对称加密技术,加密速度很快。 现在高端一点的CPU都带有AES-NI指令,可以极快的完成加密和解密。

举例来说,坚果云存储系统采用了intel 的AES-NI加速,在采用AES加密和解密的时候,

单核的性能可以超过 1GB Byte/秒,非常非常快,很适合对大量数据进行加解密。 

但是AES作为对称加密技术,如何安全的分发密钥是一个难题。通过任何方式传递密钥都有泄密的风险。当然,目前我国高大上的量子通信技术或许能很好的解决这个问题。

RSA作为非对称加密技术的代表, 加解密的速度其实相当慢,只能对小块的数据进行加解密。但是其非对称的特点,满足公钥可以随处分发,只有公钥能解密私钥加密的数据,只有私钥能解密公钥加密的数据。所以很适合用来进行密钥分发和身份验证,这两个应用场景刚好相反。

1)用于对称秘钥分发的场景,其他人用公钥加密对称的秘钥,那么只有授权人才持有私钥,因此才能解密获得对应的秘钥,解决了AES密钥分发的难题;

2)对于身份验证的场景,授权人用私钥加密一段指令,其他人用公钥解密对应的数据,验证对应的指令与之前约定的某些特征一致(例如,这段话必须使用四川口音,像是坚果云CEO 

的标准四川口音==),如果一致,那么可以确认这个指令就是授权人发出的。

相关趣闻轶事:

RSA除了是一个伟大的发明,被免费开放给所有互联网用户使用。它的发明者还以此成立了一家名为 RSA Security 的网络安全公司,这家公司最后被EMC高价收购。这是德艺双馨的伟大证明, 是“又红又专”的典范。

RSA的算法是以三个发明者的名字命名的,三位都是成功的数学家,科学家和企业家,其中的排名第一Ron Rivest,有非常多的杰出贡献。

RSA是整个互联网数据安全的基础,与光纤处于同样基础和重要的方式。 大部分的加密和解密的应用都是同时应用RSA和AES。

总结

破解加密的难度除了跟 加密方法 有关,还跟 密钥长度 以及 加密模式 有很大的关系,就拿AES来说,有AES128和AES256( 代表密钥长度 ),显然AES256的安全性能比AES128更高,而AES又要四种模式:ECB、CBC、CFB、OFB( 代表加密模式 )。

RSA1024是属于非对称加密,是基于大整数因式分解难度,也就是两个质数相乘很容易,但是找一个大数的质因子非常困难。量子计算机时代,RSA有一定的风险,具体可以参考: 超链接

AES256目前没有明显的漏洞,唯一的问题就是如何安全的分发密钥。

现在大部分的加密解密都是同时应用RSA和AES,发挥各自的优势,使用RSA进行密钥分发、协商,使用AES进行业务数据的加解密。

⑺ 在数据加密类型中RSA采用的是对称密钥体制吗

不是,这是典型的非对称加解密算法,是三个人的名字字头。
实际应用的时候,是交换了信息,生成一个密钥,然后就是对称加解密了,几分钟一换,对称的算法速度快

⑻ RSA是什么意思

RSA算法是一种非对称密码算法,所谓非对称,就是指该算法需要一对密钥,使用其中一个加密,则需要用另一个才能解密。
RSA的算法涉及三个参数,n、e1、e2。
其中,n是两个大质数p、q的积,n的二进制表示时所占用的位数,就是所谓的密钥长度。
e1和e2是一对相关的值,e1可以任意取,但要求e1与(p-1)*(q-1)互质;再选择e2,要求(e2*e1)mod((p-1)*(q-1))=1。
(n及e1),(n及e2)就是密钥对。

RSA加解密的算法完全相同,设A为明文,B为密文,则:A=B^e1 mod n;B=A^e2 mod n;
e1和e2可以互换使用,即:
A=B^e2 mod n;B=A^e1 mod n;

补充回答:
对明文进行加密,有两种情况需要这样作:
1、您向朋友传送加密数据,您希望只有您的朋友可以解密,这样的话,您需要首先获取您朋友的密钥对中公开的那一个密钥,e及n。然后用这个密钥进行加密,这样密文只有您的朋友可以解密,因为对应的私钥只有您朋友拥有。
2、您向朋友传送一段数据附加您的数字签名,您需要对您的数据进行MD5之类的运算以取得数据的"指纹",再对"指纹"进行加密,加密将使用您自己的密钥对中的不公开的私钥。您的朋友收到数据后,用同样的运算获得数据指纹,再用您的公钥对加密指纹进行解密,比较解密结果与他自己计算出来的指纹是否一致,即可确定数据是否的确是您发送的、以及在传输过程中是否被篡改。

密钥的获得,通常由某个机构颁发(如CA中心),当然也可以由您自己创建密钥,但这样作,您的密钥并不具有权威性。

计算方面,按公式计算就行了,如果您的加密强度为1024位,则结果会在有效数据前面补0以补齐不足的位数。补入的0并不影响解密运算。

⑼ rsa和rsa的区别

首先来说,RSA是一种非对称加密算法,它是由三位数学家(Rivest、Shamir、Adleman)设计出来的。非对称加密是相对于对称加密而言的。对称加密算法是指加密解密使用的是同一个秘钥,而非对称加密是由两个密钥(公钥、私钥)来进行加密解密的,由此可见非对称加密安全性更高。 公钥顾名思义就是公开的密钥会发放给多个持有人,而私钥是私有密码往往只有一个持有人。 公私钥特性 公钥与私钥是成对出现的; 私钥文件中包含了公钥数据,所以可以基于私钥导出公钥; 密钥越长,越难破解,所以2048位密钥比1024位密钥要更安全; 公钥和私钥都是密钥,被公开的那个就是公钥,没有被公开的那个就是私钥。 公钥和私钥都可用于加密和解密 公钥和私钥都可以用于加解密操作,用公钥加密的数据只能由对应的私钥解密,反之亦然。虽说两者都可用于加密,但是不同场景使用不同的密钥来加密,规则如下: 1、私钥用于签名、公钥用于验签 签名和加密作用不同,签名并不是为了保密,而是为了保证这个签名是由特定的某个人签名的,而不是被其它人伪造的签名,所以私钥的私有性就适合用在签名用途上。 私钥签名后,只能由对应的公钥解密,公钥又是公开的(很多人可持有),所以这些人拿着公钥来解密,解密成功后就能判断出是持有私钥的人做的签名,验证了身份合法性。 2、公钥用于加密、私钥用于解密,这才能起到加密作用 因为公钥是公开的,很多人可以持有公钥。若用私钥加密,那所有持有公钥的人都可以进行解密,这是不安全的! 若用公钥加密,那只能由私钥解密,而私钥是私有不公开的,只能由特定的私钥持有人解密,保证的数据的安全性。 RSA算法可以总结为四句话:公钥加密、私钥解密、私钥签名、公钥验签。加密是防止信息泄露,而签名是为了防止信息被篡改。

⑽ Rsa是什么意思

RSA加密算法是一种非对称加密算法。在公开密钥加密和电子商业中RSA被广泛使用。RSA是1977年由罗纳德·李维斯特(RonRivest)、阿迪·萨莫尔(AdiShamir)和伦纳德·阿德曼(LeonardAdleman)一起提出的。当时他们三人都在麻省理工学院工作。RSA就是他们三人姓氏开头字母拼在一起组成的。

1973年,在英国政府通讯总部工作的数学家克利福德·柯克斯(CliffordCocks)在一个内部文件中提出了一个相同的算法,但他的发现被列入机密,一直到1997年才被发表。

(10)rsa是对称加密算法么扩展阅读

RSA的安全性依赖于大数分解,但是否等同于大数分解一直未能得到理论上的证明,因为没有证明破解RSA就一定需要作大数分解。

假设存在一种无须分解大数的算法,那它肯定可以修改成为大数分解算法。RSA的一些变种算法已被证明等价于大数分解。不管怎样,分解n是最显然的攻击方法。人们已能分解多个十进制位的大素数。因此,模数n必须选大一些,因具体适用情况而定。

阅读全文

与rsa是对称加密算法么相关的资料

热点内容
命令方块怎么调键盘 浏览:841
不把密码存在服务器上怎么办 浏览:398
怎么让指令方块的命令消失 浏览:543
用单片机做plc 浏览:404
云服务器进入子目录命令 浏览:795
服务器机柜如何配电 浏览:578
怎么删除iphone资源库里的app 浏览:940
pdf鱼 浏览:648
单片机pcf8591什么作用 浏览:805
sql命令学院 浏览:283
加密软件在电脑那个盘 浏览:988
android获取外部存储 浏览:573
怎么查自己家的服务器地址 浏览:858
编程c语言工作好不好 浏览:569
单片机焊接地怎么连接 浏览:694
游戏源码怎么抓 浏览:216
程序员帮大家引走怪物 浏览:16
手机网页小游戏源码 浏览:513
战地一服务器怎么设置管理员 浏览:396
数控车床编程可以上班吗 浏览:460