`
xwhoyeah
  • 浏览: 91523 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

RSA算法基础->实践

阅读更多
RSA算法基础->实践

<一>基础

RSA算法非常简单,概述如下:
找两素数p和q
取n=p*q
取t=(p-1)*(q-1)
取任何一个数e,要求满足e取d*e%t==1

这样最终得到三个数: n  d  e

设消息为数M (M 设c=(M**d)%n就得到了加密后的消息c
设m=(c**e)%n则 m == M,从而完成对c的解密。
注:**表示次方,上面两式中的d和e可以互换。

在对称加密中:
n d两个数构成公钥,可以告诉别人;
n e两个数构成私钥,e自己保留,不让任何人知道。
给别人发送的信息使用e加密,只要别人能用d解开就证明信息是由你发送的,构成了签名机制。
别人给你发送信息时使用d加密,这样只有拥有e的你能够对其解密。

rsa的安全性在于对于一个大数n,没有有效的方法能够将其分解
从而在已知n d的情况下无法获得e;同样在已知n e的情况下无法
求得d。

<二>实践

接下来我们来一个实践,看看实际的操作:
找两个素数:
p=47
q=59
这样
n=p*q=2773
t=(p-1)*(q-1)=2668
取e=63,满足e用perl简单穷举可以获得满主 e*d%t ==1的数d:
C:\Temp>perl -e "foreach $i (1..9999){ print($i),last if $i*63%2668==1 }"
847
即d=847

最终我们获得关键的
n=2773
d=847
e=63

取消息M=244我们看看

加密:

c=M**d%n = 244**847%2773
用perl的大数计算来算一下:
C:\Temp>perl -Mbigint -e "print 244**847%2773"
465
即用d对M加密后获得加密信息c=465

解密:

我们可以用e来对加密后的c进行解密,还原M:
m=c**e%n=465**63%2773 :
C:\Temp>perl -Mbigint -e "print 465**63%2773"
244
即用e对c解密后获得m=244 , 该值和原始信息M相等。
分享到:
评论

相关推荐

    RSA-Digital-Signature-master_加密_RSA数字签名_

    这个"RSA-Digital-Signature-master"压缩包可能包含了一个关于如何使用RSA算法实现数字签名的示例代码或教程。 在RSA算法中,一对密钥被生成:公钥和私钥。公钥可以公开给任何人,而私钥则必须由密钥拥有者妥善保管...

    VC++实现RSA算法

    总的来说,实现VC++中的RSA算法需要深入理解数论基础,掌握大整数运算技巧,并能够正确实现加密解密过程。同时,了解相关的安全性和应用背景也是必不可少的。通过实践和学习,可以逐步掌握这个强大的加密工具。

    RSA算法演示.rar

    总的来说,这个“RSA算法演示”压缩包为我们提供了一个学习和实践RSA算法的宝贵资源。通过研究源码,不仅可以掌握RSA的基本原理,还能提升对加密算法的理解和编程能力,对于从事或希望进入信息安全领域的人员来说,...

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

    以上实验内容展示了如何在C++环境下实现RSA算法的基本功能,并提供了相关的数学基础和安全注意事项。通过这些内容的学习与实践,可以更好地理解RSA算法的工作原理及其在实际应用中的优势和局限性。

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

    RSA算法是一种非对称加密算法,由Ron Rivest、Adi Shamir和Leonard Adleman在1977年提出,因此得名RSA。...通过对C语言版RSA算法的实践,开发者能够更好地控制和优化算法性能,以适应各种安全需求。

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

    实验目的在于通过实践加深对RSA算法原理的理解和应用。在公钥密码体制中,RSA算法的独特之处在于它能够同时用于数据加密和数字签名。加密过程使用公钥,解密过程使用私钥,这一特性使得RSA在开放的网络环境中具有较...

    RSA算法JAVA实现的代码

    基础 RSA 算法 RSA 算法的基本思路是:找两个素数 p 和 q,计算 n = p * q 和 t = (p-1) * (q-1)。然后选择一个数 e,使得 e 且 e 和 t 互素(最大公因数为 1)。最后,计算 d,使得 d * e % t == 1。这样,我们就...

    RSA算法RSA算法RSA算法课程设计

    RSA算法是一种非对称加密算法,它是现代密码学的基础之一,由Ron Rivest、Adi Shamir和Leonard Adleman在1977年共同提出,因此得名RSA。这个算法的重要特点是它使用一对公钥和私钥,其中公钥可以公开,而私钥必须...

    RSA算法在VC++环境下的实现

    RSA算法是一种非对称加密算法,由Ron Rivest、Adi Shamir和Leonard Adleman在1977年提出,是现代密码学的基石之一。...通过深入理解和实践,开发者可以在实际项目中灵活运用RSA算法来保障数据的安全。

    读硬盘序列号和加密RSA算法.rar

    在提供的压缩文件"20073132040295"中,可能包含了一个实现读取硬盘序列号的程序或脚本,以及一个使用RSA算法加密或解密的示例代码。通过学习这些内容,开发者可以更好地理解和掌握这两个重要的IT概念,并在实际项目...

    实验二(第4章 使用RSA算法自动分配密钥的聊天程序 )1

    为了实现这一功能,你需要深入理解RSA算法的数学基础,包括同余理论和Euler函数,以及如何正确地生成和使用公钥和私钥。 总之,这个实验旨在通过实际编程加深对RSA算法的理解,掌握非对称加密技术在网络安全中的...

    RSA(Java).rar_rsa_rsa-java

    RSA算法是一种非对称加密算法...通过这个教程,你可以掌握RSA算法的基础知识,了解如何在Java环境下实现这一重要的加密算法。随着对算法理解的加深,你将能够应用RSA到实际的安全应用场景中,如数字证书、HTTPS通信等。

    RSA算法和实现及实例.doc

    #### 一、RSA算法的基础概念 RSA算法是一种非对称加密技术,由Ron Rivest、Adi Shamir和Leonard Adleman三位密码学家于1977年提出,因此得名RSA。这种加密方法的安全性基于大数分解的难题,即很难将一个大合数分解...

    基于RSA的加密算法的实验报告

    ### 基于RSA的加密算法的实验报告 ...综上所述,通过本实验报告的学习和实践,我们可以深入了解RSA算法的工作原理及其在实际应用中的实现细节。这对于理解现代密码学的基本概念和技术具有重要意义。

    毕业设计-RSA算法(源代码+论文+ppt)

    除了源代码,论文部分应详细阐述RSA算法的理论基础,描述你的实现方法,分析其安全性,可能的改进方案,以及在实际应用中的考量因素。PPT则可以用来展示你的研究过程、主要成果和创新点,以便于向导师和同学们汇报。...

    RSA 算法演示

    1. **RSA算法基础** RSA算法由Rivest、Shamir和Adleman三位科学家提出,基于大数因子分解的困难性。它包含一对密钥:公钥和私钥。公钥用于加密,私钥用于解密,确保了数据的安全性。 2. **生成密钥对** - **选择...

    易语言源码易语言RSA算法演示源码.rar

    RSA算法,全称是Rivest-Shamir-Adleman算法,是一种非对称加密算法,广泛应用于数据加密、数字签名等领域。这种算法基于大数因子分解的困难性,安全性较高。现在,我们将深入探讨易语言如何实现RSA算法以及源码中的...

    rsa算法实现系统

    6. **论文资料**:提供的论文可能涵盖了RSA算法的理论基础、安全性分析以及不同应用场景下的优化策略。这些资料对于深入理解RSA算法及其在实际系统中的应用非常有价值。 7. **安全性考虑**:虽然RSA算法强大,但...

Global site tag (gtag.js) - Google Analytics