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)

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


--------------------- 

九日王朝

025源码论坛声明 1、本网站中的绝大部分资源来源于网络, 本网站不保证所有资源的正确性和安全性,不为其合法性负责.
2、对于一切使用本网站资源而可能遭致的意外、疏忽、侵权及其造成的损失,本网站对其概不负责,亦不承担任何法律责任。
3、其他单位或个人使用、转载或引用本站原创文章时必须同时征得本025源码网的同意.
4、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时删除并致以最深的歉意。
5、如需要本站的游戏源码或搭建帮助,可以联系站长 15623571666(微信同号)或者扫描右侧二维码!

您可能还会对下面的文章感兴趣:

    cache
    Processed in 0.003368 Second.