4321oiuy 发表于 2016-9-18 10:05:00

python/shell字符串加解密

查看网上很多都是抄袭的代码,大同小异,在前辈的基础上优化代码:

    可自动补全16x字符串位数,解密后移除还原

    优化加密后得到的数据码为base64,更易使用

3. 增加参数实例

4. 增强代码可读性

#!/usr/bin/env python

#coding: utf-8

'''

+-----------------------------------------------------------------------+

|Author: Cheng Wenfeng <277546922@qq.com>                               |

+-----------------------------------------------------------------------+

'''


import sys

import base64

import getopt

from Crypto.Cipher import AES


if len(sys.argv) < 2:

      print 'Syntax: %s handle str \n \

      eg: %sencode277546922@qq.com' % (sys.argv,sys.argv)

      sys.exit()


opts,args=getopt.getopt(sys.argv, "h", ['help'])

for opt,arg inopts:

      if opt == '--help' or opt == '-h'      :

         print 'Syntax: %s handle str \n \

      eg: %sencode277546922@qq.com' % (sys.argv,sys.argv)

      sys.exit()


Formatkey = '\0'

FormatStr = lambda s: s+(16 - len(s)%16)*Formatkey


key='qq277546922qqqqq'


data=str(sys.argv)


def encode(key,data):

      keyIV=key

      obj = AES.new(key, AES.MODE_CBC,keyIV)

      ciphertext = base64.b64encode(obj.encrypt(FormatStr(data)))

      print ciphertext


def decode(key,data):

      keyIV=key

      obj2 = AES.new(key, AES.MODE_CBC,keyIV)

      try:

                newmesg = obj2.decrypt(base64.b64decode(data))

                print newmesg.replace('\0','')

      exceptTypeError:

                print 'Decode Fail'


if sys.argv=='encode':

      encode(key,data)

elif sys.argv=='decode':

      decode(key,data)

else :

      print 'handle error'

      sys.exit()
页: [1]
查看完整版本: python/shell字符串加解密