python加密与解密实战全攻略_Python 实现 RSA 加密与解密.pdf

您所在位置:网站首页 > 海量文档

&nbsp>&nbsp计算机&nbsp>&nbspPython

a476e75ce57e4882405abe7b4456fc6b.gif

Python 实现 RSA 加密与解密.pdf12页

本文档一共被下载:2377011b61454b208b34ad77b4c31088.gif次,您可全文免费在线阅读后下载本文档。

072ad097814a33d1ad18e33ca14a5a9e.png

9ec2792a743ebdf4575ee09a03c275ea.png

7af312d1be2cfc1e59f15880bb7a7e7a.png

5f207613e329ca76dc87c76d3ff77e64.png

adf7aa3071c520b8a2063089f549261c.png

下载提示

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

发表评论

请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。

用户名:

验证码:

c9f2bced460b0329ba0aadbbc3f0fc71.png

匿名?

发表评论

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值