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中的Classes和Metaclasses详解
Apr 02 Python
整理Python最基本的操作字典的方法
Apr 24 Python
Django与JS交互的示例代码
Aug 23 Python
Python numpy 点数组去重的实例
Apr 18 Python
解决Spyder中图片显示太小的问题
Apr 27 Python
浅谈Python里面小数点精度的控制
Jul 16 Python
详解python实现识别手写MNIST数字集的程序
Aug 03 Python
Python实现随机创建电话号码的方法示例
Dec 07 Python
简单了解python中的与或非运算
Sep 18 Python
详解vscode实现远程linux服务器上Python开发
Nov 10 Python
python判断all函数输出结果是否为true的方法
Dec 03 Python
解决python 在for循环并且pop数组的时候会跳过某些元素的问题
Dec 11 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
DOTA2 玩家自创拉野攻略 特色英雄快速成长篇
2020/04/20 DOTA
php adodb操作mysql数据库
2009/03/19 PHP
php将数据库导出成excel的方法
2010/05/07 PHP
php新建文件自动编号的思路与实现
2011/06/27 PHP
php中删除、清空session的方式总结
2015/10/09 PHP
ThinkPHP表单令牌错误的相关解决方法分析
2016/05/20 PHP
CentOS 7.2 下编译安装PHP7.0.10+MySQL5.7.14+Nginx1.10.1的方法详解(mini版本)
2016/09/01 PHP
php实现将二维关联数组转换成字符串的方法详解
2017/07/31 PHP
在Laravel 中实现是否关注的示例
2019/10/22 PHP
Javascript模板技术
2007/04/27 Javascript
两个select之间option的互相添加操作(jquery实现)
2009/11/12 Javascript
js 获取(接收)地址栏参数值的方法
2013/04/01 Javascript
javascript中的原型链深入理解
2014/02/24 Javascript
JS显示下拉列表框内全部元素的方法
2015/03/31 Javascript
JavaScript 定时器 SetTimeout之定时刷新窗口和关闭窗口(代码超简单)
2016/02/26 Javascript
深入理解Vue.js源码之事件机制
2017/09/27 Javascript
webpack4 SCSS提取和懒加载的示例
2018/09/03 Javascript
如何在微信小程序里面退出小程序的方法
2019/04/28 Javascript
8 个有用的JS技巧(推荐)
2019/07/03 Javascript
JavaScript 闭包的使用场景
2020/09/17 Javascript
vue中echarts的用法及与elementui-select的协同绑定操作
2020/11/17 Vue.js
[55:25]VGJ.T vs Optic Supermajor小组赛D组 BO3 第三场 6.3
2018/06/04 DOTA
python追加元素到列表的方法
2015/07/28 Python
python3的print()函数的用法图文讲解
2019/07/16 Python
python GUI库图形界面开发之PyQt5多线程中信号与槽的详细使用方法与实例
2020/03/08 Python
django 模版关闭转义方式
2020/05/14 Python
python openCV自制绘画板
2020/10/27 Python
Python中logging日志的四个等级和使用
2020/11/17 Python
Luxplus荷兰:以会员价购买美容产品等,独家优惠
2019/08/30 全球购物
Aquatalia官网:意大利著名鞋履品牌
2019/09/26 全球购物
自荐信结尾
2013/10/27 职场文书
供电工程专业求职信
2014/08/09 职场文书
办理信用卡收入证明范例
2014/09/13 职场文书
教师党员个人总结
2015/02/10 职场文书
Java实现二维数组和稀疏数组之间的转换
2021/06/27 Java/Android
Java实现聊天机器人完善版
2021/07/04 Java/Android