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 相关文章推荐
Ubuntu 14.04+Django 1.7.1+Nginx+uwsgi部署教程
Nov 18 Python
用Python中的wxPython实现最基本的浏览器功能
Apr 14 Python
在Python中使用第三方模块的教程
Apr 27 Python
python实现爬取千万淘宝商品的方法
Jun 30 Python
Python+django实现简单的文件上传
Aug 17 Python
浅谈Python类里的__init__方法函数,Python类的构造函数
Dec 10 Python
基于python 二维数组及画图的实例详解
Apr 03 Python
python 多线程重启方法
Feb 18 Python
pandas修改DataFrame列名的实现方法
Feb 22 Python
python 实现矩阵按对角线打印
Nov 29 Python
Django cookie和session的应用场景及如何使用
Apr 29 Python
Python Django / Flask如何使用Elasticsearch
Apr 19 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
IIS6+PHP5+MySQL5+Zend Optimizer+phpMyAdmin安装配置图文教程 2009年
2009/06/08 PHP
PHP实现二维数组去重功能示例
2017/01/12 PHP
jquery 屏蔽一个区域内的所有元素,禁止输入
2009/10/22 Javascript
利用javascript数组长度循环数组内所有元素
2013/12/27 Javascript
js实现的点击数量加一可操作数据库
2014/05/09 Javascript
jquery插件bxslider用法实例分析
2015/04/16 Javascript
初识Javascript小结
2015/07/16 Javascript
JS数组返回去重后数据的方法解析
2017/01/03 Javascript
js实现返回顶部效果
2017/03/10 Javascript
微信小程序中多个页面传参通信的学习与实践
2017/05/05 Javascript
浅谈使用React.setState需要注意的三点
2017/12/18 Javascript
js 索引下标之li集合绑定点击事件
2018/01/12 Javascript
Webpack打包字体font-awesome的方法示例
2018/04/26 Javascript
监听angularJs列表数据是否渲染完毕的方法示例
2018/11/07 Javascript
jQuery实现的老虎机跑动效果示例
2018/12/29 jQuery
js事件触发操作实例分析
2019/06/21 Javascript
JS实现多选框的操作
2020/06/24 Javascript
python实现用于测试网站访问速率的方法
2015/05/26 Python
Python爬虫包BeautifulSoup学习实例(五)
2018/06/17 Python
python判断完全平方数的方法
2018/11/13 Python
python读取txt文件,去掉空格计算每行长度的方法
2018/12/20 Python
Python 脚本获取ES 存储容量的实例
2018/12/27 Python
对python 生成拼接xml报文的示例详解
2018/12/28 Python
Django 重写用户模型的实现
2019/07/29 Python
python 字符串常用函数详解
2019/09/11 Python
python 函数的缺省参数使用注意事项分析
2019/09/17 Python
深入了解Python 变量作用域
2020/07/24 Python
python PyAUtoGUI库实现自动化控制鼠标键盘
2020/09/09 Python
AJAX都有哪些有点和缺点
2012/11/03 面试题
商务助理岗位职责
2013/11/13 职场文书
企业负责人任命书
2014/06/05 职场文书
员工薪酬激励方案
2014/06/13 职场文书
销售竞赛活动方案
2014/08/23 职场文书
语文教师个人工作总结
2015/02/06 职场文书
2015教师个人师德工作总结
2015/10/23 职场文书
Pandas||过滤缺失数据||pd.dropna()函数的用法说明
2021/05/14 Python