rsa加密大数据
PQ的积M叫做模,模规定了这个数字空间中最大的数,是这个空间的边界,这个空间中所有的数都要小于模M,包括被加密的消息块。所以如果消息(a1,a2,a3...)任何一个超过了M,加密后都无法正切解密,因为加密后和解密后得到的数都在这个空间中,不可能得到一个大于M的数。
但是如果用来加密的消息A大于M,解密后得到的结果加上K倍的M一定会等于A,因为加密的过程是做模乘操作,大于M的消息A首先被除M然后取余数了,该余数一定小于M,然后所有的加密操作都是针对该余数来进行的,想要还原A的话用该A模M的余数加上数倍的M就可以了。解密的话还原的也是该余数,得到余数后还原A,也是加上数倍的M就可以了。
实质上RSA的加密有个条件,消息A必须要小于M。
❷ RSA加密解密无法对大数进行加密解密
推荐您可以下载超级加密3000试试。
超级加密 3000采用先进的加密算法,使你的文件和文件夹加密后,真正的达到超高的加密强度,让你的加密数据无懈可击。
建议您可以下载试试。
❸ RSA中都是很大的数进行运算,特别是乘模运算和幂模运算,计算机如何去表示这些大数并进行快速有效的运算
RSA没有快速有效运算,不适合大数据加密解密。
❹ php中RSA加密,明文超长,需要分段加密该怎么做
一般来说,加密分为两个部分,一个是非对称加密,一个是对称加密,使用对称加密加密正文信息,使用非对称加密加密对称加密的密钥,然后发送加密数据(消息
摘要和数字签名就不讨论了),这是正规的数据加密策略,对称加密默认支持大数据分段加密策略,你只需要从接口中完成加密即可,而且对称加密速度比非对称加
密快很多,如果你需要使用这个策略建议使用AES。
如果你不愿意使用对称加密,只愿意使用AES加密,那你就必须丧失速度了,而且自己处理分段加密,因为RSA加密通常是117个字节就要分段(这
个长度可能和密钥长度有关,我是用的接口是117),你需要自己把数据变成N个117字节的数据段来完成加密,解密也需要自己完成字节拼装。
❺ rsa算法原理
RSA算法是最常用的非对称加密算法,它既能用于加密,也能用于数字签名。RSA的安全基于大数分解的难度。其公钥和私钥是一对大素数(100到200位十进制数或更大)的函数。从一个公钥和密文恢复出明文的难度,等价于分解两个大素数之积。
我们可以通过一个简单的例子来理解RSA的工作原理。为了便于计算。在以下实例中只选取小数值的素数p,q,以及e,假设用户A需要将明文“key”通过RSA加密后传递给用户B,过程如下:设计公私密钥(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=7时,e×d≡1 mod f(n)同余等式成立。因此,可令d=7。从而我们可以设计出一对公私密钥,加密密钥(公钥)为:KU =(e,n)=(3,33),解密密钥(私钥)为:KR =(d,n)=(7,33)。
英文数字化。将明文信息数字化,并将每块两个数字分组。假定明文英文字母编码表为按字母顺序排列数值。则得到分组后的key的明文信息为:11,05,25。
明文加密。用户加密密钥(3,33) 将数字化明文分组信息加密成密文。由C≡Me(mod n)得:
C1(密文)≡M1(明文)^e (mod n) == 11≡11^3 mod 33 ;
C2(密文)≡M2(明文)^e (mod n) == 26≡05^3 mod 33;
C3(密文)≡M3(明文)^e (mod n) == 16≡25^3 mod 33;
所以密文为11.26.16。
密文解密。用户B收到密文,若将其解密,只需要计算,即:
M1(明文)≡C1(密文)^d (mod n) == 11≡11^7 mod 33;
M2(明文)≡C2(密文)^d (mod n) == 05≡26^7 mod 33;
M3(明文)≡C3(密文)^d (mod n) == 25≡16^7 mod 33;
转成明文11.05.25。根据上面的编码表将其转换为英文,我们又得到了恢复后的原文“key”。
当然,实际运用要比这复杂得多,由于RSA算法的公钥私钥的长度(模长度)要到1024位甚至2048位才能保证安全,因此,p、q、e的选取、公钥私钥的生成,加密解密模指数运算都有一定的计算程序,需要仰仗计算机高速完成。
❻ 编写程序实现RSA算法对数据进行加密和解密
RSA算法是非对称算法,要配合公钥和私钥机制实现加密和解密,如果常规大数据量的加密和解密,还是用对称加密算法效率高。
你的问题涉及内容很多,建议找《精通PKI网络安全认证技术与编程实现》来看,里面对具体的应用介绍的很清楚
❼ 如何使用RSA 和 DES 算法 对数据加密
一、混合加密的理由
a、前面提及了RSA加解密算法和DES加解密算法这两种加解密算法,由于随着计算机系统能力的不断发展,DES的安全性比它刚出现时会弱得多,追溯历史破解DES的案例层出不穷,一台实际的机器可以在数天内破解DES是让某些人相信他们不能依赖DES的安全性的唯一方法。而相对于DES,RSA的安全性则相对高些,虽然破解RSA的案例也有,但其所付出的代价是相对大的(相对DES),如今RSA的密钥也在升级,这说明破解RSA的难度也在增大。
b、在RSA加解密算法中提及到RSA加密明文会受密钥的长度限制,这就说明用RSA加密的话明文长度是有限制的,而在实际情况我们要进行加密的明文长度或许会大于密钥长度,这样一来我们就不得不舍去RSA加密了。对此,DES加密则没有此限制。
鉴于以上两点(个人观点),单独的使用DES或RSA加密可能没有办法满足实际需求,所以就采用了RSA和DES加密方法相结合的方式来实现数据的加密。
其实现方式即:
1、信息(明文)采用DES密钥加密。
2、使用RSA加密前面的DES密钥信息。
最终将混合信息进行传递。
而接收方接收到信息后:
1、用RSA解密DES密钥信息。
2、再用RSA解密获取到的密钥信息解密密文信息。
最终就可以得到我们要的信息(明文)。
二、实现例子:
结合前面RSA和DES加密:
/// <summary>
/// RSA和DES混合加密
/// </summary>
/// <param name="data">待加密数据</param>
/// <param name="publicKey">RSA公钥</param>
/// <returns></returns>
public Param Encrypt(string data, string publicKey)
{
//加密数据
DESSecurity DES = new DESSecurity();
string DESKey = DES.GenerateKey();
string encryptData = DES.Encrypt(data, DESKey);
//加密DESkey
RSASecurity RSA = new RSASecurity();
string encryptDESKey = RSA.Encrypt(DESKey, publicKey);
Param mixParam = new Param();
mixParam.DESKey = encryptDESKey;
mixParam.Data = encryptData;
return mixParam;
}
/// <summary>
/// RSA和DES混合解密
/// </summary>
/// <param name="data">待解密数据</param>
/// <param name="key">带解密的DESKey</param>
/// <param name="privateKey">RSA私钥</param>
/// <returns></returns>
public string Decrypt(string data, string key, string privateKey)
{
//解密DESKey
RSASecurity RSA = new RSASecurity();
string DESKey = RSA.Decrypt(key, privateKey);
//解密数据
DESSecurity DES = new DESSecurity();
return DES.Decrypt(data, DESKey);
❽ RSA加密算法中提到“大数”,什么是“大数”呢
足够大的素数...比方说上万的素数
❾ RSA算法加密
RSA加密算法是一种典型的非对称加密算法,它基于大数的因式分解数学难题,它也是应用最广泛的非对称加密算法,于1978年由美国麻省理工学院(MIT)的三位学着:Ron Rivest、Adi Shamir 和 Leonard Adleman 共同提出。
它的原理较为简单,假设有消息发送方A和消息接收方B,通过下面的几个步骤,就可以完成消息的加密传递:
消息发送方A在本地构建密钥对,公钥和私钥;
消息发送方A将产生的公钥发送给消息接收方B;
B向A发送数据时,通过公钥进行加密,A接收到数据后通过私钥进行解密,完成一次通信;
反之,A向B发送数据时,通过私钥对数据进行加密,B接收到数据后通过公钥进行解密。
由于公钥是消息发送方A暴露给消息接收方B的,所以这种方式也存在一定的安全隐患,如果公钥在数据传输过程中泄漏,则A通过私钥加密的数据就可能被解密。
如果要建立更安全的加密消息传递模型,需要消息发送方和消息接收方各构建一套密钥对,并分别将各自的公钥暴露给对方,在进行消息传递时,A通过B的公钥对数据加密,B接收到消息通过B的私钥进行解密,反之,B通过A的公钥进行加密,A接收到消息后通过A的私钥进行解密。
当然,这种方式可能存在数据传递被模拟的隐患,但可以通过数字签名等技术进行安全性的进一步提升。由于存在多次的非对称加解密,这种方式带来的效率问题也更加严重。
❿ 什么是RSA算法,求简单解释。
RSA公钥加密算法是1977年由Ron Rivest、Adi Shamirh和LenAdleman在(美国麻省理工学院)开发的。RSA取名来自开发他们三者的名字。RSA是目前最有影响力的公钥加密算法,它能够
抵抗到目前为止已知的所有密码攻击,已被ISO推荐为公钥数据加密标准。RSA算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但那时想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。由于进行的都是大数计算,使得RSA最快的情况也比DES慢上好几倍,无论是软件还是硬件实现。速度一直是RSA的缺陷。一般来说只用于少量数据加密。RSA的速度比对应同样安全级别的对称密码算法要慢1000倍左右。
基础
大数分解和素性检测——将两个大素数相乘在计算上很容易实现,但将该乘积分解为两个大素数因子的计算量是相当巨大的,以至于在实际计算中是不能实现的。
1.RSA密码体制的建立:
(1)选择两个不同的大素数p和q;
(2)计算乘积n=pq和Φ(n)=(p-1)(q-1);
(3)选择大于1小于Φ(n)的随机整数e,使得gcd(e,Φ(n))=1;
(4)计算d使得de=1mod Φ(n);
(5)对每一个密钥k=(n,p,q,d,e),定义加密变换为Ek(x)=xemodn,解密变换为Dk(x)=ydmodn,这里x,y∈Zn;
(6)以{e,n}为公开密钥,{p,q,d}为私有密钥。
2.RSA算法实例:
下面用两个小素数7和17来建立一个简单的RSA算法:
(1)选择两个素数p=7和q=17;
(2)计算n=pq=7 17=119,计算Φ(n)=(p-1)(q-1)=6 16=96;
(3)选择一个随机整数e=5,它小于Φ(n)=96并且于96互素;
(4)求出d,使得de=1mod96且d<96,此处求出d=77,因为 77 5=385=4 96+1;
(5)输入明文M=19,计算19模119的5次幂,Me=195=66mod119,传出密文C=66;(6)接收密文66,计算66模119的77次幂;Cd=6677≡19mod119得到明文19。