Python实现的文本简单可逆加密算法示例


Posted in Python onMay 18, 2017

本文实例讲述了Python实现的文本简单可逆加密算法。分享给大家供大家参考,具体如下:

其实很简单,就是把一段文本每个字符都通过某种方式改变(比如加1)

这样就实现了文本的加密操作,解密就是其逆运算

# -*-coding:utf-8 -*-
import sys
reload(sys)
sys.setdefaultencoding('utf8')
#加密
def jiami():
  filename=raw_input('please input file:\n')
  while True:
    try:
      password=int(raw_input('input number pass word:\n'))
      break
    except:
      print 'please input number:\n'
  fileword=open(filename,'r')
  num=filename.rfind('.')
  newfilename=filename[:num]+'[加密]'.encode('gbk')+filename[num:]
  content=fileword.read(1)
  newfileword=open(newfilename,'a+')
  while len(content)>0:
    contentInt=ord(content)
    newContent=contentInt+password
    c=chr(newContent)
    newfileword.write(c)
    content=fileword.read(1)
  newfileword.close()
  fileword.close()
#解密
def jiemi():
  filename=raw_input('please input file:\n')
  while True:
    try:
      password=int(raw_input('input number pass word:\n'))
      break
    except:
      print 'please input number:\n'
  fileword=open(filename,'r')
  num=filename.rfind('.')
  num2=filename.rfind('[')
  newfilename=filename[:num2]+'[解密]'.encode('gbk')+filename[num:]
  content=fileword.read(1)
  newfileword=open(newfilename,'a+')
  while len(content)>0:
    contentInt=ord(content)
    newContent=contentInt-password
    c=chr(newContent)
    newfileword.write(c)
    content=fileword.read(1)
  newfileword.close()
  fileword.close()
while True:
  index=int(raw_input('---请输入命令,1为加密 2为解密 3为退出---\n'.encode('gbk')))
  if index==1:
    jiami()
  elif index==2:
    jiemi()
  elif index==3:
    exit(0)
else:
    pass

注意:

①如果出现中文编码问题可以通过.encode,.decode编码解码

②可以通过Python的切片操作处理文件名,很方便,例如: newfilename=filename[:num]+'[加密]'.encode('gbk')+filename[num:]

③最重要的!!本加密方法只是简单的给文本字符做一个+password处理,其方法非常不合理,因为加的数如果过大会造成chr字节不够(比如你输一个1000)

所以本代码只适用于新手练习,而不能作为真正的处理算法

Python 相关文章推荐
使用python编写批量卸载手机中安装的android应用脚本
Jul 21 Python
python计算书页码的统计数字问题实例
Sep 26 Python
Python回调函数用法实例详解
Jul 02 Python
Python实现的简单模板引擎功能示例
Sep 02 Python
python网络爬虫学习笔记(1)
Apr 09 Python
Pycharm 设置自定义背景颜色的图文教程
May 23 Python
Django跨域请求问题的解决方法示例
Jun 16 Python
python爬取基于m3u8协议的ts文件并合并
Apr 26 Python
十分钟搞定pandas(入门教程)
Jun 21 Python
对Python的交互模式和直接运行.py文件的区别详解
Jun 29 Python
python 密码学示例——理解哈希(Hash)算法
Sep 21 Python
python实现双链表
May 25 Python
Python操作MongoDB详解及实例
May 18 #Python
Python 迭代器与生成器实例详解
May 18 #Python
Python字符串处理实例详解
May 18 #Python
Python进阶-函数默认参数(详解)
May 18 #Python
Python装饰器实现几类验证功能做法实例
May 18 #Python
如何用itertools解决无序排列组合的问题
May 18 #Python
详解使用python的logging模块在stdout输出的两种方法
May 17 #Python
You might like
在PHP里得到前天和昨天的日期的代码
2007/08/16 PHP
PHP @ at 记号的作用示例介绍
2014/10/10 PHP
php 利用socket发送HTTP请求(GET,POST)
2015/08/24 PHP
SAE实时日志接口SDK用法示例
2016/10/09 PHP
CentOS7.0下安装PHP5.6.30服务的教程详解
2018/09/29 PHP
由浅到深了解JavaScript类
2006/09/08 Javascript
js检测客户端不是firefox则提示下载
2007/04/07 Javascript
基于jQuery的弹出警告对话框美化插件(警告,确认和提示)
2010/06/10 Javascript
点击按钮或链接不跳转只刷新页面的脚本整理
2013/10/22 Javascript
jQuery简单实现中间浮窗效果
2016/09/04 Javascript
jquery.Jcrop结合JAVA后台实现图片裁剪上传实例
2016/11/05 Javascript
Bootstrap媒体对象学习使用
2017/03/07 Javascript
jQuery插件zTree实现的基本树与节点获取操作示例
2017/03/08 Javascript
详解vue跨组件通信的几种方法
2017/06/15 Javascript
Three.js基础学习教程
2017/11/16 Javascript
VueJs监听window.resize方法示例
2018/01/17 Javascript
原生javascript实现连连看游戏
2019/01/03 Javascript
页面内锚点定位及跳转方法总结(推荐)
2019/04/24 Javascript
javascript局部自定义鼠标右键菜单
2020/12/08 Javascript
Django框架下在视图中使用模版的方法
2015/07/16 Python
使用Python 统计高频字数的方法
2019/01/31 Python
python日志模块logbook使用方法
2019/09/19 Python
使用Python生成200个激活码的实现方法
2019/11/22 Python
Python中join()函数多种操作代码实例
2020/01/13 Python
使用sklearn的cross_val_score进行交叉验证实例
2020/02/28 Python
Python实现对adb命令封装
2020/03/06 Python
Python sorted排序方法如何实现
2020/03/31 Python
python实现逢七拍腿小游戏的思路详解
2020/05/26 Python
python能自学吗
2020/06/18 Python
快速了解Python开发环境Spyder
2020/06/29 Python
米兰网婚纱礼服法国网上商店:Milanoo法国
2016/08/20 全球购物
实习自我鉴定范文
2013/10/30 职场文书
《水上飞机》教学反思
2014/04/10 职场文书
我爱幼儿园演讲稿
2014/09/11 职场文书
运动员入场词
2015/07/18 职场文书
python井字棋游戏实现人机对战
2022/04/28 Python