RAS加密算法2

合集下载

ras密码算法

ras密码算法

RAS密码算法详解一、简介远程访问服务(Remote Access Service,RAS)是一种允许用户通过网络从远程位置连接到网络的技术。

为了确保数据的安全性和完整性,RAS使用各种密码算法来保护数据的传输过程。

本文将详细介绍RAS密码算法的工作原理和使用方法。

二、RAS密码算法概述RAS密码算法是一种用于保护数据在传输过程中不被窃取或篡改的算法。

它通过加密技术,将明文数据转化为密文数据,然后在接收端进行解密,还原为原始的明文数据。

RAS密码算法的主要目标是提供足够的安全性,以防止未经授权的用户访问和使用数据。

三、RAS密码算法的工作原理1. 密钥生成:RAS密码算法首先需要生成一个密钥,这个密钥将被用于加密和解密数据。

密钥的生成过程通常是随机的,以确保每个用户都有一个唯一的密钥。

2. 加密:当用户需要发送数据时,RAS密码算法会使用生成的密钥对数据进行加密。

加密的过程是将明文数据转化为密文数据,这个过程是可逆的,即知道密钥的人可以解密密文数据,还原为原始的明文数据。

3. 传输:加密后的数据被发送到网络上,然后通过网络传输到接收端。

在这个过程中,如果数据被窃取,由于没有密钥,窃取者无法解密数据,从而保护了数据的安全性。

4. 解密:在接收端,RAS密码算法使用相同的密钥对收到的密文数据进行解密,还原为原始的明文数据。

四、RAS密码算法的类型RAS密码算法主要有以下几种类型:1. 对称加密算法:这种算法使用同一个密钥进行加密和解密。

常见的对称加密算法有DES、3DES和AES等。

2. 非对称加密算法:这种算法使用一对密钥,一个用于加密,另一个用于解密。

常见的非对称加密算法有RSA、ECC和ElGamal等。

3. 混合加密算法:这种算法结合了对称加密算法和非对称加密算法的优点,既可以提供高速度的加密和解密,又可以提供足够的安全性。

常见的混合加密算法有RSA-OAEP和ECDHE等。

五、RAS密码算法的使用在使用RAS密码算法时,需要根据实际的安全需求选择合适的密码算法。

两种通用加密算法(MD5RSA)使用

两种通用加密算法(MD5RSA)使用

两种通用加密算法(MD5RSA)使用一、MD5算法:MD5(Message Digest Algorithm 5)是一种常用的散列函数,用于确保数据的完整性和一致性。

MD5算法接收一段明文,并输出128位(16字节)的散列结果。

其特点如下:1.不可逆性:MD5算法是单向函数,散列结果无法通过逆向计算得知原始明文。

即使输入的明文只有微小的差异,其输出的散列结果也会有较大的差异。

2.高效性:相对于其他散列算法,MD5算法的计算速度比较快,适合用于加密处理较小的数据块。

3.容易碰撞:由于MD5算法的散列结果长度固定且较短,因此存在多个不同的明文可以得到相同的散列结果,这被称为碰撞。

碰撞攻击可以通过选择特定的输入来篡改数据的完整性。

MD5算法的应用场景主要包括:1.用于验证文件完整性:通过计算文件的MD5值,可以在传输过程中验证文件是否被篡改。

2.存储用户密码:在存储用户密码之前,首先对其进行MD5加密,以保护用户密码的安全。

3.数据校验:可以对数据进行MD5散列,将散列结果与预设的散列结果进行比对,以验证数据的完整性。

二、RSA算法:RSA(Rivest-Shamir-Adleman)是一种非对称加密算法,常用于数据的加密和数字签名。

RSA算法使用两个密钥:公钥(Public Key)和私钥(Private Key)。

其特点如下:1.非对称性:RSA算法使用一对相关的密钥进行加密和解密操作,其中公钥用于加密数据,私钥用于解密数据。

公钥可以公开,而私钥必须保密,确保只有私钥的持有者才能解密数据。

2.安全性:RSA算法的安全性基于大数分解的困难性,即将一个非常大的数分解成其素因子的难度。

只要包含足够大的素数,RSA算法就可以提供高度的安全性。

3.数字签名:RSA算法可以用于生成和验证数字签名。

发送数据者可以使用私钥对数据进行签名,接收者使用公钥验证签名的有效性,以确保数据的完整性和真实性。

RSA算法的应用场景主要包括:1.数据加密:RSA算法可以用于加密敏感数据,只有使用私钥进行解密的用户才能获取原始数据。

R S A 加 密 算 法

R S A 加 密 算 法

RSA加密算法实现以及C#一.RSA算法简介大体是先生成两个大素数p和q,再生成e,e和(p-1)*(q-1)互素。

取p和q的乘积:n=p*q 为公共模数。

再生成正整数d,满足d*e-1可以被(p-1)*(q-1)整除。

这样d就为私钥,(e,n)为公钥,形成rsa的公私钥对。

其中n的二进制位称为该密钥长度,密钥越长越难破解,也就越安全。

RSA算法 :?首先, 找出三个数, p, q, r,?其中 p, q 是两个相异的质数, r 是与 (p-1)(q-1) 互质的数.?p, q, r 这三个数便是 private key?接著, 找出 m, 使得 rm == 1 mod (p-1)(q-1).?这个 m 一定存在, 因为 r 与 (p-1)(q-1) 互质, 用辗转相除法就可以得到了.?再来, 计算 n = pq.?m, n 这两个数便是 public key?编码过程是, 若资料为 a, 将其看成是一个大整数, 假设 a n.?如果 a = n 的话, 就将 a 表成 s 进位 (s = n, 通常取 s = 2^t),?则每一位数均小於 n, 然後分段编码.?接下来, 计算 b == a^m mod n, (0 = b n),?b 就是编码後的资料.?解码的过程是, 计算 c == b^r mod pq (0 = c pq),?於是乎, 解码完毕.?这段话中:m就是Exponent,n是Modulus,p是P,q是Q,r是D,而InverseQ * p == 1 mod q======================================================== ====================RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(1024); --1024 bit keyRSAParameters par = rsa.ExportParameters(false); -- export the public keystring str = rsa.ToXmlString(true);str 值如下:========================RSAKeyValuetuNKKEhLHftRx81wHKQgunAHSUmLwBWBMNqBEZvZSAmntlzJPN3Yy7N5 3lLpeacl9M1J0LjeFyyOzpWwiYsapyDo4vlGzYcUy0AojMNW5DXuG7-UK0+ LWdW2gs6mhN3CWwmynqCKnvrwv993m-iPiFXUyqQu+OhSsca7p4XZnn8= -ModulusExponentAQAB-ExponentP7X5WxuLAIYcoXt5LKelRzUZT8hjkU4qIikHBplK8TUNU5y1rDlQ9Awd b9mTIf2sILUDT7ryZZ6KlIFDfCVu3IQ==-PQxSOlCaMGBOo15EG1zwQJl1zhKicAXtzc-1nlnWiRz0cr5PiBdYJE2Rn miDNgOvz-WiU1RTvoWFTgQy5erXPBnw==-QDPjeIJk75JzH4Dt1GUlBBpJ3rZkewfFG3SDs8kEuqgxoPwSEBREflvjc yquzQQuFbIRsjRFHKmL0zy27CU3vFlIQ==-DPDQOQYXfhMe8ZsB3bW4Llp-n73pD7VaYRZIAsDxLzgJPUjcBI5xfBkjax 0X1vvtcQKvplau8wjiK3LZr-Ugw9GBBw==-DQInverseQMjXjlXM7NuJWahnVSSD2JLeDDjwEyat7xyG+9mgWCMUSM-2v ja4v9U+exOYu8T4fnwKq5+hKlA3E2Aw9IjeIxg==-InverseQ Dh7zgME+fuOvrwbB-UjKau+Uj80frui-7x8eU3f3e4XGREW+CSHObUWy uucytzoW5TR0EeS6MX4TJpRhCg4NDzp6vbye3RIN8KAsRSbd8Znh38ABer5 43rjzB-kn305bKnmbqQtO89pQEidjZX441AYu1dkqTkhLYwHQSxbFNpcE= -RSAKeyValue========================二.填充算法由于密钥长度有限,一次性加密的数据长度也有限,因此必须对明文进行分块加密,再合并加密结果。

RAS 加密通信课程设计

RAS 加密通信课程设计

目录1 引言 (1)1.1研究背景 (1)1.2 研究目的 (1)2 RSA密码算法 (3)2.1RSA数学基础 (3)2.2 RSA算法原理 (4)2.3RSA安全性及速度 (4)2.4 RSA加密算法的缺点 (5)3 RSA算法加密 (6)3.1 系统需求分析 (6)3.2 RSA加密算法演示 (6)3.3 通信软件服务端设计 (8)3.4 通信软件客户端设计 (10)4 RSA算法的加密通信应用设计 (11)5.1 整体框架 (11)5.2客户端请求协议及处理方式 (13)5.3RSA在通信软件中的运用 (14)5 结论 (14)参考文献 (15)摘要RSA加密运算的速度十分慢,但是在PC性能越来越好的今天,对于几千字节的数据进行一次几百位密钥的RSA加密,所消耗的时间应该是可以接受的。

下面结合大数运算程序的调试,从理论上简单的分析消耗时间。

分析RSA算法的应用现状,论证文件加密应用RSA 算法的可行性和意义。

设计一套完整实用的RSA文件加密解决方案,具体编码实现。

经过加密的文件以及密钥文件都是文本文件。

给出关键类类图、整个应用程序的结构描述文档、关键模块流程图、较详细的接口文档、所有源代码。

对应用程序进行测试,对测试结果进行分析研究,进而对应用程序进行改进,对关键算法进行尽可能的优化,最终得到一个在运行的可以用指定密钥对任意文件进行RSA加密并可解密的完整应用程序,和一些相关的可移植组件。

关键词:RSA算法;文件加密;加密成文本1 引言沈阳航空航天大学学院1.1研究背景随着计算机信息技术的蓬勃发展,作为信息采集、存储、处理和传输的媒体,计算机及网络应用逐步延伸到社会生活的方方面面。

当人类越来越感受到计算机系统功能的强大,不得不感叹于信息技术带来的方便快捷的同时,各种忧虑也渐渐产生:已经习惯性依赖于计算机的人们离开它还能生存吗?信息战将对国防安全、军事领域产生什么影响?信息诈骗和其他信息犯罪将如何改变人们的日常生活? 这些问题都属于计算机信息安全的范畴。

计算机安全-密码学(2)

计算机安全-密码学(2)

注意:M必须比N小
为什么RSA 可以加解密
因为 Euler 定理的一个推论: Mkø(n)+1 = M mod N RSA 中: N=p.q ø(N)=(p-1)(q-1) 选择 e & d 使得ed=1 mod ø(N) 因此 存在k使得e.d=1+k.ø(N) 因此 Cd = (Me)d = M1+k.ø(N) = M mod N
RSA 算法 由Rivest、Shamir和Adleman于 1978年提出。该算法的数学基础 是初等数论中的Euler(欧拉)定 理,并建立在大整数因子的困难 性之上。
公开密钥算法
2 RSA算法简介
1978年,美国麻省理工学院(MIT)的研究小组成员: 李 维 斯 特 (Rivest) 、 沙 米 尔 (Shamir) 、 艾 德 曼 (Adleman)提出了一种基于公钥密码体制的优秀加密 算法——RSA算法。 RSA算法是一种分组密码体制算 法,它的保密强度是建立在具有大素数因子的合数, 其因子分解是困难的。 RSA得到了世界上的最广泛的应用,ISO在1992年颁 布的国际标准X.509中,将RSA算法正式纳入国际标准。 1999年美国参议院已通过了立法,规定电子数字签 名与手写签名的文件、邮件在美国具有同等的法律效 力。
算法
加密/解密
数字签名
密钥交换
RSA
Diffie-Hellman DSA
Y
N N
Y
N Y
Y
Y N
对公钥密码算法的误解
公开密钥算法比对称密钥密码算法更安全?
任何一种算法都依赖于密钥长度、破译密码的工作 量,从抗分析角度,没有一方更优越
公开密钥算法使对称密钥成为过时了的技术?

RAS算法原理

RAS算法原理

RAS算法原理如果你问我,哪⼀种最重要?我可能会回答。

因为它是计算机通信安全的基⽯,保证了加密数据不会被破解。

你可以想象⼀下,信⽤卡交易被破解的后果。

进⼊正题之前,我先简单介绍⼀下,什么是”公钥加密算法”。

⼀、⼀点历史1976年以前,所有的加密⽅法都是同⼀种模式:(1)甲⽅选择某⼀种加密规则,对信息进⾏加密;(2)⼄⽅使⽤同⼀种规则,对信息进⾏解密。

由于加密和解密使⽤同样规则(简称”密钥”),这被称为(Symmetric-key algorithm)。

这种加密模式有⼀个最⼤弱点:甲⽅必须把加密规则告诉⼄⽅,否则⽆法解密。

保存和传递密钥,就成了最头疼的问题。

1976年,两位美国计算机学家Whitfield Diffie 和 Martin Hellman,提出了⼀种崭新构思,可以在不直接传递密钥的情况下,完成解密。

这被称为。

这个算法启发了其他科学家。

⼈们认识到,加密和解密可以使⽤不同的规则,只要这两种规则之间存在某种对应关系即可,这样就避免了直接传递密钥。

这种新的加密模式被称为”⾮对称加密算法”。

(1)⼄⽅⽣成两把密钥(公钥和私钥)。

公钥是公开的,任何⼈都可以获得,私钥则是保密的。

(2)甲⽅获取⼄⽅的公钥,然后⽤它对信息加密。

(3)⼄⽅得到加密后的信息,⽤私钥解密。

如果公钥加密的信息只有私钥解得开,那么只要私钥不泄漏,通信就是安全的。

1977年,三位数学家Rivest、Shamir 和 Adleman 设计了⼀种算法,可以实现⾮对称加密。

这种算法⽤他们三个⼈的名字命名,叫做。

从那时直到现在,RSA算法⼀直是最⼴为使⽤的”⾮对称加密算法”。

毫不夸张地说,只要有计算机⽹络的地⽅,就有RSA算法。

这种算法⾮常,密钥越长,它就越难破解。

根据已经披露的⽂献,⽬前被破解的最长RSA密钥是768个⼆进制位。

也就是说,长度超过768位的密钥,还⽆法破解(⾄少没⼈公开宣布)。

因此可以认为,1024位的RSA密钥基本安全,2048位的密钥极其安全。

非对称密码系统ras的加密原理及其应用

非对称密码系统ras的加密原理及其应用

非对称密码系统RSA的加密原理及其应用1. 引言在信息安全领域,密码学是一项重要的技术,用于保护数据的机密性和完整性。

非对称密码系统是密码学中的一种重要的加密算法,RSA算法是非对称密码系统中最常用的算法之一。

本文将介绍RSA算法的加密原理以及其在实际应用中的案例。

2. RSA算法的加密原理RSA算法是一种基于大数质因数分解难题的非对称密码算法。

其加密原理如下:1.选择两个大素数p和q,计算它们的乘积n,即n = p * q。

2.计算n的欧拉函数φ(n),即φ(n) = (p-1) * (q-1),φ(n)表示小于n且与n互质的正整数的个数。

3.选择一个整数e,满足1 < e < φ(n),且e与φ(n)互质。

4.计算e的模反元素d,满足d * e ≡ 1 (mod φ(n))。

5.公钥为(n, e),私钥为(n, d)。

RSA算法的加密和解密操作分别为:•加密:将明文M转化为整数m,使得0 ≤ m < n,然后计算密文C,C ≡ m^e (mod n)。

•解密:将密文C转化为整数c,然后计算明文M,M ≡ c^d (mod n)。

3. RSA算法的应用RSA算法广泛应用于信息安全领域,以下是几个典型的应用案例:3.1 加密通信RSA算法可以用于保护通信过程中的数据机密性。

通信双方可以使用对方的公钥进行加密,只有拥有对应私钥的一方才能解密得到明文。

这种方式可以有效防止第三方窃取通信内容。

3.2 数字签名RSA算法可以用于生成和验证数字签名,确保数据的完整性和真实性。

发送方使用私钥对数据进行签名,接收方使用对应公钥对签名进行验证。

通过公钥加密和私钥解密的方式,可以确保数字签名的唯一性,防止篡改和伪造。

3.3 身份认证RSA算法可以用于身份认证的加密协议。

通常情况下,服务提供方将其公钥存储在服务器上,用户使用该公钥对其身份认证信息进行加密,并发送给服务器。

服务器使用私钥解密得到用户的身份认证信息,若解密成功,则认证通过。

R S A 加 密 算 法

R S A 加 密 算 法

RSA加密算法详解以及RSA在laravel中的应用最近做APP,由于刚开始开发,所以关于数据传输之间的加密部分还没做。

在BOSS的要求下,准备给APP的接口加上RSA加密。

先测试一个小demo。

一、使用场景APP接口数据部分的加密。

特别是设计到账号密码,如果是明文传输的话,这是极为危险的一件事,因此我们需要在接口部分进行数据加密。

这里选用RSA加密方式,前端进行加密,后端进行解密操作。

然后后端再进行一些加密,存入数据库。

二、RSA的概念1、RSA简介RSA公钥加密算法是1977年由Ron Rivest、Adi Shamirh和LenAdleman在(美国麻省理工学院)开发的。

RSA取名来自开发他们三者的名字。

RSA是目前最有影响力的公钥加密算法,它能够抵抗到目前为止已知的所有密码攻击,已被ISO推荐为公钥数据加密标准。

目前该加密方式广泛用于网上银行、数字签名等场合。

RSA算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但那时想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。

2、算法核心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)就是密钥对。

其中(n,e1)为公钥,(n,e2)为私钥。

[1]RSA加解密的算法完全相同,设A为明文,B为密文,则:A=B^e2 mod n;B=A^e1 mod n;(公钥加密体制中,一般用公钥加密,私钥解密)e1和e2可以互换使用,即:A=B^e1 mod n;B=A^e2 mod n;三、RSA加密的用法。

这里应用的步骤是,前端加密–》后端解密–》解密的数据正确则表示成功1、前端加密部分这里先引入封装好的方法,RsaUtil.php,然后再app下新建keys 目录,里面存放我们生成的公钥和私钥。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

用实例给新手讲解RSA加密算法
图为 RSA公开密钥算法的发明人,从左到右Ron Rivest, Adi Shamir, Leonard
Adleman. 照片摄于1978年
RSA加密算法是最常用的非对称加密算法,CFCA在证书服务中离不了它。

但是有不少新来的同事对它不太了解,恰好看到一本书中作者用实例对它进行了简化而生动的描述,使得高深的数学理论能够被容易地理解。

我们经过整理和改写特别推荐给大家阅读,希望能够对时间紧张但是又想了解它的同事有所帮助。

RSA是第一个比较完善的公开密钥算法,它既能用于加密,也能用于数字签名。

RSA以它的三个发明者Ron Rivest, Adi Shamir, Leonard Adleman的名字首字母命名,这个算法经受住了多年深入的密码分析,虽然密码分析者既不能证明也不能否定RSA的安全性,但这恰恰说明该算法有一定的可信性,目前它已经成为最流行的公开密钥算法。

RSA的安全基于大数分解的难度。

其公钥和私钥是一对大素数(100到200位十进制数或更大)的函数。

从一个公钥和密文恢复出明文的难度,等价于分解两个大素数之积(这是公认的数学难题)。

RSA的公钥、私钥的组成,以及加密、解密的公式可见于下表:
可能各位同事好久没有接触数学了,看了这些公式不免一头雾水。

别急,在没有正式讲解RSA加密算法以前,让我们先复习一下数学上的几个基本概念,它们
在后面的介绍中要用到:
一、什么是“素数”?
素数是这样的整数,它除了能表示为它自己和1的乘积以外,不能表示为任何其它两个整数的乘积。

例如,15=3*5,所以15不是素数;又如,12=6*2=4*3,所以12也不是素数。

另一方面,13除了等于13*1以外,不能表示为其它任何两个整数的乘积,所以13是一个素数。

素数也称为“质数”。

二、什么是“互质数”(或“互素数”)?
小学数学教材对互质数是这样定义的:“公约数只有1的两个数,叫做互质数。

”这里所说的“两个数”是指自然数。

判别方法主要有以下几种(不限于此):
(1)两个质数一定是互质数。

例如,2与7、13与19。

(2)一个质数如果不能整除另一个合数,这两个数为互质数。

例如,3与10、5与 26。

(3)1不是质数也不是合数,它和任何一个自然数在一起都是互质数。

如1和9908。

(4)相邻的两个自然数是互质数。

如 15与 16。

(5)相邻的两个奇数是互质数。

如 49与 51。

(6)大数是质数的两个数是互质数。

如97与88。

(7)小数是质数,大数不是小数的倍数的两个数是互质数。

如 7和 16。

(8)两个数都是合数(二数差又较大),小数所有的质因数,都不是大数的约数,这两个数是互质数。

如357与715,357=3×7×17,而3、7和17都不是715的约数,这两个数为互质数。

等等。

三、什么是模指数运算?
指数运算谁都懂,不必说了,先说说模运算。

模运算是整数运算,有一个整数m,以n为模做模运算,即m mod n。

怎样做呢?让m去被n整除,只取所得的余数作为结果,就叫做模运算。

例如,10 mod 3=1;26 mod 6=2;28 mod 2 =0等等。

模指数运算就是先做指数运算,取其结果再做模运算。


好,现在开始正式讲解RSA加密算法。

算法描述:
(1)选择一对不同的、足够大的素数p,q。

(2)计算n=pq。

(3)计算f(n)=(p-1)(q-1),同时对p, q严加保密,不让任何人知道。

(4)找一个与f(n)互质的数e,且1<e<f(n)。

(5)计算d,使得de≡1 mod f(n)。

这个公式也可以表达为d ≡e-1 mod f(n)
这里要解释一下,≡是数论中表示同余的符号。

公式中,≡符号的左边必须和符号右边同余,也就是两边模运算结果相同。

显而易见,不管f(n)取什么值,符号右边1 mod f(n)的结果都等于1;符号的左边d与e的乘积做模运算后的结果也必须等于1。

这就需要计算出d的值,让这个同余等式能够成立。

(6)公钥KU=(e,n),私钥KR=(d,n)。

(7)加密时,先将明文变换成0至n-1的一个整数M。

若明文较长,可先分割成适当的组,然后再进行交换。

设密文为C,则加密过程为:。

(8)解密过程为:。

实例描述:
在这篇科普小文章里,不可能对RSA算法的正确性作严格的数学证明,但我们可以通过一个简单的例子来理解RSA的工作原理。

为了便于计算。

在以下实例中只选取小数值的素数p,q,以及e,假设用户A需要将明文“key”通过RSA加密后传递给用户B,过程如下:
(1)设计公私密钥(e,n)和(d,n)。

令p=3,q=11,得出n=p×q=3×11=33;f(n)=(p-1)(q-1)=2×10=20;取e=3,(3与20互质)则e×d≡1 mod f(n),即3×d≡1 mod 20。

d怎样取值呢?可以用试算的办法来寻找。

试算结果见下表:
通过试算我们找到,当d=7时,e×d≡1 mod f(n)同余等式成立。

因此,可令
d=7。

从而我们可以设计出一对公私密钥,加密密钥(公钥)为:KU
=(e,n)=(3,33),解密密钥(私钥)为:KR =(d,n)=(7,33)。

(2)英文数字化。

将明文信息数字化,并将每块两个数字分组。

假定明文英文字母编码表为按字母顺序排列数值,即:
则得到分组后的key的明文信息为:11,05,25。

(3)明文加密
用户加密密钥(3,33) 将数字化明文分组信息加密成密文。

由C≡Me(mod n)得:
因此,得到相应的密文信息为:11,31,16。

(4)密文解密。

用户B收到密文,若将其解密,只需要计算M= Cd(mod n),即:
用户B得到明文信息为:11,05,25。

根据上面的编码表将其转换为英文,我们又得到了恢复后的原文“key”。

你看,它的原理就可以这么简单地解释!
当然,实际运用要比这复杂得多,由于RSA算法的公钥私钥的长度(模长度)要到1024位甚至2048位才能保证安全,因此,p、q、e的选取、公钥私钥的生成,加密解密模指数运算都有一定的计算程序,需要仰仗计算机高速完成。

最后简单谈谈RSA的安全性
首先,我们来探讨为什么RSA密码难于破解?
在RSA密码应用中,公钥KU是被公开的,即e和n的数值可以被第三方窃听者得到。

破解RSA密码的问题就是从已知的e和n的数值(n等于pq),想法求出d的数值,这样就可以得到私钥来破解密文。

从上文中的公式:d ≡e-1 (mod((p-1)(q-1)))或de≡1 (mod((p-1)(q-1))) 我们可以看出。

密码破解的实质问题是:从Pq的数值,去求出(p-1)和(q-1)。

换句话说,只要求出p和q的值,我们就能求出d的值而得到私钥。

当p和q是一个大素数的时候,从它们的积pq去分解因子p和q,这是一个公认的数学难题。

比如当pq大到1024位时,迄今为止还没有人能够利用任何计算工具去完成分解因子的任务。

因此,RSA从提出到现在已近二十年,经历了各种攻击的考验,逐渐为人们接受,普遍认为是目前最优秀的公钥方案之一。

然而,虽然RSA的安全性依赖于大数的因子分解,但并没有从理论上证明破译RSA的难度与大数分解难度等价。

即RSA的重大缺陷是无法从理论上把握它的保密性能如何。

此外,RSA的缺点还有:A)产生密钥很麻烦,受到素数产生技术的限制,因而难以做到一次一密。

B)分组长度太大,为保证安全性,n 至少也要 600 bits 以上,使运算代价很高,尤其是速度较慢,较对称密码算法慢几个数量级;且随着大数分解技术的发展,这个长度还在增加,不利于数据格式的标准化。

因此,使用RSA只能加密少量数据,大量的数据加密还要靠对称密码算法。

相关文档
最新文档