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类参数self使用示例
Feb 17 Python
python网络编程学习笔记(一)
Jun 09 Python
python网络编程实例简析
Sep 26 Python
Linux环境下MySQL-python安装过程分享
Feb 02 Python
python实现批量监控网站
Sep 09 Python
Python实现的直接插入排序算法示例
Apr 29 Python
Django框架模板介绍
Jan 15 Python
使用python执行shell脚本 并动态传参 及subprocess的使用详解
Mar 06 Python
Django项目uwsgi+Nginx保姆级部署教程实现
Apr 19 Python
Tensorflow中的降维函数tf.reduce_*使用总结
Apr 20 Python
python 对象真假值的实例(哪些视为False)
Dec 11 Python
详解Go语言运用广度优先搜索走迷宫
Jun 23 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中IP地址与整型数字互相转换详解
2014/08/20 PHP
php实现微信公众平台账号自定义菜单类
2014/12/02 PHP
Lumen timezone 时区设置方法(慢了8个小时)
2018/01/20 PHP
js 操作select和option常用代码整理
2012/12/13 Javascript
JQuery入门——用bind方法绑定事件处理函数应用介绍
2013/02/05 Javascript
jQuery异步加载数据并添加事件示例
2014/08/24 Javascript
JavaScript实现N皇后问题算法谜题解答
2014/12/29 Javascript
js 基础篇必看(点击事件轮播图的简单实现)
2016/08/20 Javascript
基于JavaScript实现焦点图轮播效果
2017/03/27 Javascript
Vue2 Vue-cli中使用Typescript的配置详解
2017/07/24 Javascript
微信小程序多列选择器range-key使用详解
2020/03/30 Javascript
js时间戳与日期格式之间相互转换
2017/12/11 Javascript
JavaScript直接调用函数与call调用的区别实例分析
2020/05/22 Javascript
Vue js with语句原理及用法解析
2020/09/03 Javascript
python ElementTree 基本读操作示例
2009/04/09 Python
关于Python元祖,列表,字典,集合的比较
2017/01/06 Python
python中使用 xlwt 操作excel的常见方法与问题
2019/01/13 Python
详解Django+uwsgi+Nginx上线最佳实战
2019/03/14 Python
python队列Queue的详解
2019/05/10 Python
python文件转为exe文件的方法及用法详解
2019/07/08 Python
tensorflow如何批量读取图片
2019/08/29 Python
python应用文件读取与登录注册功能
2019/09/23 Python
python操作docx写入内容,并控制文本的字体颜色
2020/02/13 Python
Python random库使用方法及异常处理方案
2020/03/02 Python
解决django接口无法通过ip进行访问的问题
2020/03/27 Python
python opencv实现直线检测并测出倾斜角度(附源码+注释)
2020/12/31 Python
H5 video poster属性设置视频封面的方法
2020/05/25 HTML / CSS
捷克原创男装和女装购物网站:Bolf.cz
2018/04/28 全球购物
简述索引存取方法的作用和建立索引的原则
2013/03/26 面试题
公司综合部的成员自我评价分享
2013/11/05 职场文书
毕业生自荐书
2014/02/03 职场文书
政府门卫岗位职责
2014/04/29 职场文书
先进员工获奖感言
2014/08/14 职场文书
公务员年度考核评语
2014/12/31 职场文书
借钱欠条怎么写
2015/07/03 职场文书
创业分两种人:那么哪些适合创业?,哪些适合不适合创业呢?
2019/08/23 职场文书