`
micheal19840929
  • 浏览: 166374 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

RSA算法介绍

阅读更多

RSA算法是第一个能同时用于加密和数字签名的算法,也易于理解和操作。 RSA也是被研究得最广泛的公钥算法,从提出到现在已近二十年,经历了各种攻击的考验,逐渐为人们接受,普遍认为是目前最优秀的公钥方案之一。

  RSA的安全性依赖于大数的因子分解,但并没有从理论上证明破译RSA的难度与大数分解难度等价,即RSA的重大缺陷是无法从理论上把握它的保密性能如何,而且密码学界多数人士倾向于因子分解不是NPC问题。

  RSA的缺点主要有:

(一) 产生密钥很麻烦,受到素数产生技术的限制,因而难以做到一次一密。

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

但RSA的缺点对软件注册码而言都不是问题,因为软件注册机可以选择一个已知的素数来生成公钥和私钥。至于运算代价很高的问题而言也不是问题,因为注册凭证信息量是很小的。

RSA理论的数学基础是数论中的欧拉定理,基本原理如下:

(一) 取两个相近的大素数p、q;

(二) 计算n=p*q,z=(p-1)*(q-1);

(三) 任取一个与z互素的整数e;

(四) 计算满足e*d=1 mod z 的整数d;

(五) 将明文m分成字符块s加密,每个块s小于n。

(六) 加密:c=m^e mod n;解密:m=c^d mod n

(七)  (n,e)和(n,d)分别称为“公开密钥”和“秘密密钥”。根据Euler定理可得:m=c^d mod n=(m^e mod n)^d mod n=m;

举例说明:

(一) 取两个素数p=11和q=13

(二) 计算n=p*q=11*13=143,z=(p-1)*(q-1)=(11-1)*(13-1)=120;

(三) 选取与z=120互素的整数e,如e=7,现可计算出满足7*d=1 mod 120的整数d=103,即:7*103=1 mod 120、7*103/120余1,

(四) 整理如下:p=11、q=13、n=143、e=7、d=103

(五) 得出公钥 (n,e)=(143,7)和私钥 (n,d)=(143,103)

以数据加密为例:

(一) 甲向乙发送机密数据信息m=85,并已知乙的公钥(n,e)=(143,7),于是可计算得出:c=m^e mod n=85^7 mod 143=123,甲将c发送至乙;

(二) 乙利用私钥(n,d)=(143,103)对c进行计算:m=c^d mod n=123^103 mod 143=85,现乙已经得到甲向其要发送的机密数据信息,而甲向乙发送信息时,甲所拥有的仅仅是乙的公钥;

由此可知,由(n,e)加密的数据只能用(n,d)解密,反之亦然,从而证明RSA加密算法是可逆的,但RSA的可逆是基于特定的数值对(即称为公钥和私钥)。

另外,RSA算法的安全性依赖于大数分解,公钥和私钥都是两个大素数(大于100个十进制位)的函数。从理论上讲,从一个密钥和密文推断出明文的难度等同于分解两个大素数的积,因此,只要选择足够大的素数、保证公钥或私钥的安全,则采用常规的破解难度是非常大的,基本上可以认定为不可能破解,由此可以认定RSA是安全的。


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/scollins/archive/2010/06/25/5694306.aspx

分享到:
评论

相关推荐

    rsa.zip_RSA 算法 介绍_RSA算法代码_rsa

    RSA算法是一种非对称加密算法,由Ron Rivest、Adi Shamir和Leonard Adleman在1977年提出,是目前最广泛使用的公钥加密技术之一。它的核心特点是使用一对密钥进行加解密,即一个公钥和一个私钥。公钥可以公开给任何人...

    RSA.rar_RSA PPT_RSA 算法 介绍_RSA 算法 原理_加密_加密 rsa

    RSA算法是一种非对称加密算法,它在信息安全领域扮演着重要的角色,特别是在数据加密和数字签名方面。由Ron Rivest、Adi Shamir和Leonard Adleman在1977年提出,因此得名RSA。这个算法是公开密钥加密技术的基础,...

    RSA 算法介绍(数据加密)

    RSA算法是一种非对称加密算法,它在信息安全领域扮演着重要的角色,特别是在数据加密和数字签名方面。由Ron Rivest、Adi Shamir和Leonard Adleman这三位科学家于1977年提出,因此得名RSA。尽管RSA的安全性至今没有...

    RSA算法试验报告

    #### 三、RSA算法介绍 ##### 3.1 RSA算法的历史与发展 RSA算法是由Ron Rivest、Adi Shamir和Leonard Adleman三位学者于1977年提出的一种非对称加密算法。它基于大整数因子分解的难度,即在已知两个大质数的情况下...

    VC++实现RSA算法

    8. **黑客基地hackbase.htm**:可能是一个关于黑客知识的文档,可能包含了关于密码学和RSA算法的基础介绍,帮助理解RSA在网络安全中的应用。 9. **RSAUpper**:这个文件名可能是某种RSA算法的特定实现或示例,可能...

    RSA算法工具 RSA算法

    RSA算法是一种非对称加密算法,由Ron Rivest、Adi Shamir和Leonard Adleman在1977年提出,因此得名RSA。这种算法在信息安全领域扮演着重要角色,广泛应用于数据加密、数字签名和密钥交换等领域。 在RSA算法中,主要...

    RSA密码算法的实现

    1. RSA 算法介绍与应用现状 RSA 公开密钥加密算法自 20 世纪 70 年代提出以来,已经得到了广泛认可和应用。发展至今,电子安全领域的各方面已经形成了较为完备的国际规范。RSA 作为最重要的公开密钥算法,在各领域...

    RSA算法演示.rar

    RSA算法是一种非对称加密算法,由Ron Rivest、Adi Shamir和Leonard Adleman在1977年提出,是目前最广泛使用的公钥加密算法。它结合了大整数因子分解的数学难题,为数据传输提供了强大的安全保护。在此RAR压缩包中,...

    RSA实现算法报告关于RSA算法的实现代码

    ### RSA算法实现报告 #### 实验环境 - **硬件配置**:处理器:Intel(R) Core(TM) i5-2430M CPU @ 2.40GHz (4CPUs), ~2.4GHz;内存:2048MB RAM - **软件工具**: - 操作系统:Windows 7 旗舰版 - 开发工具:...

    RSA算法加解密

    RSA算法加解密 RSA算法是第一个既能用于数据加密也能用于数字签名的算法。它易于理解和操作,也很流行。算法的名字以发明者的名字命名:Ron Rivest, Adi Shamir 和 Leonard Adleman。但RSA 的安全性一直未能得到...

    RSA.rar_RSA算法_寻找大素数 rsa_数论算法_简单数论

    RSA算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但是想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。RSA算法是第一个能同时用于加密和数字签名的算法,也易于理解和操作。...

    RSA算法的纯Python实现(源码)

    RSA算法的纯Python实现,压缩包内共4个文件,分别是 1、大整数的运算库(当然不是算加减乘除的,这个python本身就有)。这个库是计算乘模运算,幂模运算(蒙哥马利算法),最大公约数算法及扩展最大公约数算法(扩展...

    密码学RSA算法实现代码

    RSA算法是一种非对称加密算法,它在信息安全领域扮演着重要的角色,特别是在数据加密和数字签名方面。由Ron Rivest、Adi Shamir和Leonard Adleman在1977年提出,因此得名RSA。这个算法基于两个数学难题:大整数因子...

    RSA算法的C实现

    RSA算法是一种非对称加密算法,由Ron Rivest、Adi Shamir和Leonard Adleman在1977年提出,是现代密码学的基石之一。它的主要特点是使用一对密钥,即公钥和私钥,来进行加密和解密。在C语言中实现RSA算法需要理解其...

    RSA算法演示RSA算法演示

    RSA算法是一种非对称加密算法,由Ron Rivest、Adi Shamir和Leonard Adleman在1977年提出,因此得名RSA。这种算法在信息安全领域有着广泛的应用,如数字签名、数据加密和密钥交换等。在本演示中,我们将深入探讨RSA...

    RSA算法实验报告 通过对RSA算法的实现,深入了解RSA原理及应用

    RSA算法是一种非对称加密算法,它在信息安全领域扮演着重要的角色,特别是在数据加密和数字签名方面。由Ron Rivest、Adi Shamir和Leonard Adleman在1977年提出,RSA的名字就是他们三人姓氏的首字母组合。 实验目的...

    rsa.rar_RSA  C语言_RSA算法C++_RSA解密 C语言_rsa

    RSA算法是一种非对称加密算法,由Ron Rivest、Adi Shamir和Leonard Adleman在1977年提出,因此得名RSA。这种算法基于大整数因子分解的困难性,是现代密码学的基石之一。在C语言中实现RSA算法,可以帮助我们理解其...

    RSA算法的C++实现

    RSA算法是一种非对称加密算法,它在信息安全领域有着广泛的应用,例如数字签名、数据加密等。这个压缩包文件提供了RSA算法的C++实现,包括头文件和源代码,是学习和理解RSA算法的一种实用资源。 RSA算法的核心原理...

    rsa算法流程图

    rsa是密钥算法中非常著名的一种算法,在pki中非对称密钥算法的最重要的一种

Global site tag (gtag.js) - Google Analytics