RSA算法密钥长度的选择

By | 09月15日
Advertisement

RSA算法密钥长度的选择是安全性和程序性能平衡的结果,密钥长度越长,安全性越好,加密解密所需时间越长。

1. 非对称加密算法中1024 bit密钥的强度相当于对称加密算法80bit密钥的强度。有资料上说以当前的软硬件水平,破解1024bit的RSA加密密文,需要一套10亿美金的系统使用若干十年的时间,所以2015年前,1024bit的还无需太担心暴力破解的危险。

2. 密钥长度增长一倍,公钥操作所需时间增加约4倍,私钥操作所需时间增加约8倍,公私钥生成时间约增长16倍。

3. 一次能加密的密文长度与密钥长度成正比, len_in_byte(raw_data) = len_in_bit(key)/8 -11,如1024bit的密钥,一次能加密的内容长度为 1024/8 -11 = 117 byte。所以非对称加密一般都用于加密对称加密算法的密钥,而不是直接加密内容。

4. 加密后密文的长度为密钥的长度,如密钥长度为1024b(128Byte),最后生成的密文固定为 1024b(128Byte)

Ref:

[1] rfc3447

[2] RSA Key Size Selection

[3] http://www.rsa.com/rsalabs/node.asp?id=2218

Similar Posts:

  • RSA算法及其相应的理论知识

    如果你不想看前面的RSA所用到的基础理论知识,可以直接跳到第6节看RSA算法的公私钥如何生成及其证明. 因为它是计算机通信安全的基石,保证了加密数据不会被破解.你可以想象一下,信用卡交易被破解的后果. 进入正题之前,我先简单介绍一下,什么是"公钥加密算法". 一.一点历史 1976年以前,所有的加密方法都是同一种模式: (1)甲方选择某一种加密规则,对信息进行加密: (2)乙方使用同一种规则,对信息进行解密. 由于加密和解密使用同样规则(简称"密钥"),这被称为&q

  • 网络安全之RSA算法

    1978年就出现了这种算法,它是第一个既能用于数据加密也能用于数字签名的算法.它易于理解和操作,也很流行.算法的名字以发明者的名字(RonRivest,AdiShamir和LeonardAdleman)命名.但RSA的安全性一直未能得到理论上的证明. RSA的安全性依赖于大数分解.公钥和私钥都是两个大素数(大于100个十进制位)的函数.据猜测,从一个密钥和密文推断出明文的难度等同于分解两个大素数的积. 密钥对的产生.选择两个大素数,p和q.计算:n=p×q然后随机选择加密密钥e,要求e和(p-1

  • RSA算法详解

    http://blog.csdn.net/starryheavens/article/details/8536238 数论,数学中的皇冠,最纯粹的数学.早在古希腊时代,人们就开始痴迷地研究数字,沉浸于这个几乎没有任何实用价值的思维游戏中.直到计算机诞生之后,几千年来的数论研究成果突然有了实际的应用,这个过程可以说是最为激动人心的数学话题之一.最近我在<程序员>杂志上连载了<跨越千年的 RSA 算法>,但受篇幅限制,只有一万字左右的内容.其实,从数论到 RSA 算法,里面的数学之美哪

  • RSA算法原理(一)转自松鼠会

    如果你问我,哪一种算法最重要?我可能会回答"公钥加密算法". 因为它是计算机通信安全的基石,保证了加密数据不会被破解.你可以想象一下,信用卡交易被破解的后果. 进入正题之前,我先简单介绍一下,什么是"公钥加密算法". 一.一点历史 1976年以前,所有的加密方法都是同一种模式: (1)甲方选择某一种加密规则,对信息进行加密: (2)乙方使用同一种规则,对信息进行解密. 由于加密和解密使用同样规则(简称"密钥"),这被称为"对称加密算法&

  • 基于RSA算法的ios客户端加密和C#服务端解密的解决方案

    来源:http://theosoft.net/ RSA是一种比较常用的非对称加密算法,其原理是基于大整数因数分解的计算安全,这里不做介绍.非对称加密的好处在于其密码分为公钥和私钥两部分,你可以随意分发你的公钥,让用户用来加密数据:等上传到服务器端后再用私钥就可以解密里面的数据.所以,这样的体系特别适合用于客户端–尤其使手机客户端的数据加密,而不用担心你的程序被反编译.破解后泄露了你的密码. 正是因为有着这么好的安全特性,早在年初,我还在使用windows mobile手机的时候,就把RSA算法写

  • 【转】iOS下使用RSA算法与PHP进行加解密通讯

    首先了解一下几个相关概念,以方便后面遇到的问题的解决: RSA算法:1977年由Ron Rivest.Adi Shamirh和LenAdleman发明的,RSA就是取自他们三个人的名字.算法基于一个数论:将两个大素数相乘非常容易,但要对这个乘积的结果进行因式分解却非常困难,因此可以把乘积公开作为公钥.该算法能够抵抗目前已知的所有密码攻击.RSA算法是一种非对称算法,算法需要一对密钥,使用其中一个加密,需要使用另外一个才能解密.我们在进行RSA加密通讯时,就把公钥放在客户端,私钥留在服务器. DE

  • &amp;lt;密码学入门&amp;gt;关于RSA算法的加密解密及代码实现

    RSA算法 是一种公钥加密算法,RSA算法相比别的算法思路非常清晰,但是想要破解的难度非常大.RSA算法基于一个非常简单的数论事实:两个素数相乘得到一个大数很容易,但是由一个大数分解为两个素数相乘却非常难.这种算法是在1978年首次亮相,它是第一个既能用于数据加密也可以用于数字签名的算法,而且理解起来简单容易.早在1973,就有密码学家发现了类似的算法,但是一直被列为绝密直到1998年才被正式公开出来. RSA算法是一种非对称的算法,该算法需要一对密钥使用其中一个加密另一个就可以进行解密.首先我

  • RSA算法实现与蒙哥马利算法(转)

    (这篇的格式更好些,转进来,方便阅读) RSA算法实现与蒙哥马利算法(转) 原理介绍 RSA 原理: 选取两个不同的大素数p.q,并计算N=p*q,选取小素数d,并计算e,使d*e % (p-1)(q-1)=1, 对于任意A<N: 若B=A**d % N 则A=B**e % N 可见d.e形成了非对称秘钥关系,加密者用公钥d加密,解密者可用私钥e解密,第三者即使拦截了密文B.公钥d和N,在不知道p.q的前提下,无法推算出e,从而无法获得明文A.当N取非常大的值时,将其因式分解成p.q是非常困难的

  • Silverlight4中利用System.Numerics.BigInteger实现RSA算法

    在Silverlight4 Beta版本发布的时候,Silverlight4 Beta的SDK中还不包含System.Numerics.dll库.要实现RSA算法,还得利用其他BigInteger类.可参见我上一篇文章<Silverlight中非对称加密及数字签名RSA算法的实现>. 现在Silverlight4正式发布了.在Silverlight4正式版的SDK中包含了System.Numerics.dll库.并且该库中实现了BigInteger类.因此,现在要在Silverlight下实现

  • [置顶] RSA算法及其java雏形

    RSA算法数学概念: 素数:素数是一个比1大,其因子只有1和它本身,没有其它数可以整除它的数.素数是无限的.例如,2,3,5,7--等. 两个数互为素数:指的是它们除了1之外没有共同的因子.也可以说这两个数的最大公因子是1.例如,4和9,3和27等. 模运算:如A模N运算,它给出了A的余数,余数是从0到N-1的某个整数,这种运算称为模运算. RSA加密算法的过程如下: (1)取两个随机大素数p和q(保密) (2)计算公开的模数r=pq(公开) (3)计算秘密的欧拉函数j (r) =(p-1)(q

Tags: