您所在位置:网站首页 > 海量文档
 > 计算机 > Python
Python 实现 RSA 加密与解密.pdf12页
本文档一共被下载:次,您可全文免费在线阅读后下载本文档。
下载提示
1.本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。
2.该文档所得收入(下载+内容+预览三)归上传者、原创者。
3.登录后可充值,立即自动返金币,充值渠道很便利
2009 年第5 期
前置知识:Python
关键词:编程、RSA、加密、解密
Python 实现RSA 加密与解密
文/图 renewjoy[S.Y.C] 成都信息工程学院 三叶草工作组
RSA 的出现,解决了DES 中密钥分发的问题,它采用了公钥和私钥制度,让人们不再为密
钥的分发而苦恼。RSA 的实现过程,完全基于数学运算,但我会以尽量简单易懂的方式,用
Python 来讲解如何实现RSA 加密与解密,而不是去研究它的数学算法。
下面,我会分三个部分来讲述:RSA 加密与解密演示程序(数非常小,理解RSA 这个算法
流程和熟悉Python 语法);RSA 加密与解密算法核心(数非常大,这主要是RSA 数学算法的
实现过程);对要加密的消息的数字化分组处理,及解密后还原为消息。
首先说一下RSA 算法的流程。公钥与私钥的产生过程为:产生两个素数p 和q;计算
n=p*q,z=(p-1)*(q-1);选择一个随机数e(0
线
过公式d=e^(-1) mod z 计算出d;得出公钥{e,n}和私钥{d,n}。
加密过程:选择明文数字M(0
解密过程:通过公式P=C^(d) mod n 计算出明文。 处
防
了解了大致的算法流程过程后,你会觉得其实RSA 非常简单。确实,RSA 算法本身的描述
就这么简单,你也可以很快的根据它的流程来写程序实现。 出
为了照顾对RSA 算法不太了解的朋友,我写了个Python 版本的演示程序,源码只有93
客
行,可以看出Python 代码的简洁与优美。
说明:这仅仅是个演示程序,千万不要认为它能运用于实践,原因后面会说。该程序涉及
明
到的Python 语法非常简单,即使你完全不会Python,只要会C 语言,也能猜出大部分语法的
黑
功能。有朋友非常讨厌数学算法,而本程序中涉及到的数学知识也非常简单,几乎在我们平时
的练习程序中都会用到。要测试该程序,可以在Linux 命令行下,进入文件所在目录,输入
注
“$python rsa_demo.py”。如果是Windows,系统默认没有安装Python 解释器,需要自己手
动安装。请安装2.x 系列(现在最新的是2.6.1),安装好过后,把python.exe 所在目录添
加到环境变量path 里去,然后把文件中第二行的utf-8 改为gb2312,否则程序执行时输出的
请
中文为乱码。最后,在DOS 下进入文件所在目录,输入 “python rsa_demo.py”即可。本程序
的目的是熟悉Python 的语法,熟悉RSA 算法流程。程序代码如下:
#!/usr/bin/env python 载
#-*- coding:utf-8 -*-
import math 转
def prime_test(prime):
"""素性测试:判断一个数是否是素数"""
end = int(math.sqrt(prime) + 1)
for i in xrange(2, end):
if prime % i == 0: #不是素数
return False
else:
return True #是
2009 年第5 期
def multip_inverse(e, z):
"""返回d = e^(-1) mod z,即返回e 的模z 的乘法逆元,公式:d * e % z = 1"""
for i in xran
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名:
验证码:
匿名?
发表评论