当前位置:  编程技术>python

python字符串加密解密的三种方法分享(base64 win32com)

    来源: 互联网  发布时间:2014-09-04

    本文导语:  1. 最简单的方法是用base64: 代码如下:import base64 s1 = base64.encodestring('hello world')s2 = base64.decodestring(s1)print s1,s2 # aGVsbG8gd29ybGQ=n# hello world Note: 这是最简单的方法了,但是不够保险,因为如果别人拿到你的密文,也可以自己解密来...

1. 最简单的方法是用base64:

代码如下:

import base64

s1 = base64.encodestring('hello world')
s2 = base64.decodestring(s1)
print s1,s2

# aGVsbG8gd29ybGQ=n
# hello world

Note: 这是最简单的方法了,但是不够保险,因为如果别人拿到你的密文,也可以自己解密来得到明文


2. 第二种方法是使用win32com.client

代码如下:

import win32com.client
def encrypt(key,content): # key:密钥,content:明文
    EncryptedData = win32com.client.Dispatch('CAPICOM.EncryptedData')
    EncryptedData.Algorithm.KeyLength = 5
    EncryptedData.Algorithm.Name = 2
    EncryptedData.SetSecret(key)
    EncryptedData.Content = content
    return EncryptedData.Encrypt()

def decrypt(key,content): # key:密钥,content:密文
    EncryptedData = win32com.client.Dispatch('CAPICOM.EncryptedData')
    EncryptedData.Algorithm.KeyLength = 5
    EncryptedData.Algorithm.Name = 2
    EncryptedData.SetSecret(key)
    EncryptedData.Decrypt(content)
    str = EncryptedData.Content
    return str

s1 = encrypt('lovebread', 'hello world')
s2 = decrypt('lovebread', s1)
print s1,s2

# MGEGCSsGAQQBgjdYA6BUMFIGCisGAQQBgjdYAwGgRDBCAgMCAAECAmYBAgFABAgq
# GpllWj9cswQQh/fnBUZ6ijwKDTH9DLZmBgQYmfaZ3VFyS/lq391oDtjlcRFGnXpx
# lG7o
# hello world



Note: 这种方法也很方便,而且可以设置自己的密钥,比第一种方法更加安全,是加密解密的首选之策!

3. 还有就是自己写加密解密算法,比如:

代码如下:

def encrypt(key, s):
    b = bytearray(str(s).encode("gbk"))
    n = len(b) # 求出 b 的字节数
    c = bytearray(n*2)
    j = 0
    for i in range(0, n):
        b1 = b[i]
        b2 = b1 ^ key # b1 = b2^ key
        c1 = b2 % 16
        c2 = b2 // 16 # b2 = c2*16 + c1
        c1 = c1 + 65
        c2 = c2 + 65 # c1,c2都是0~15之间的数,加上65就变成了A-P 的字符的编码
        c[j] = c1
        c[j+1] = c2
        j = j+2
    return c.decode("gbk")

def decrypt(key, s):
    c = bytearray(str(s).encode("gbk"))
    n = len(c) # 计算 b 的字节数
    if n % 2 != 0 :
        return ""
    n = n // 2
    b = bytearray(n)
    j = 0
    for i in range(0, n):
        c1 = c[j]
        c2 = c[j+1]
        j = j+2
        c1 = c1 - 65
        c2 = c2 - 65
        b2 = c2*16 + c1
        b1 = b2^ key
        b[i]= b1
    try:
        return b.decode("gbk")
    except:
        return "failed"

key = 15
s1 = encrypt(key, 'hello world')
s2 = decrypt(key, s1)
print s1,'n',s2

# HGKGDGDGAGPCIHAGNHDGLG
# hello world


    
 
 

您可能感兴趣的文章:

  • Python不使用print而直接输出二进制字符串
  • C++中的Python字符串处理 pyString
  • Python中实现json字符串和dict类型的互转
  • python 字符串split的用法分享
  • Python将日期时间按照格式转换成字符串
  • Python 字符串中的字符倒转
  • python字符串格式化输出及相关操作代码举例
  • Python 连接字符串(join %)
  • Python中类似printf的字符串格式化详解
  • python字符串排序方法
  • python list 合并连接字符串的方法
  • python去掉字符串中重复字符的方法
  • Python 字符串定义
  • python 将字符串转换成字典dict
  • python中将字典转换成其json字符串
  • python字符串替换示例
  • Python 执行字符串表达式函数(eval exec execfile)
  • python字符串连接方式汇总
  • HTML标签参考手册 iis7站长之家
  • Python中实现字符串类型与字典类型相互转换的方法
  • python实现从字符串中找出字符1的位置以及个数的方法
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • python的id()函数解密过程
  • Python GUI编程:tkinter实现一个窗口并居中代码
  • 让python同时兼容python2和python3的8个技巧分享
  • python异常信息堆栈输出到日志文件
  • 使用setup.py安装python包和卸载python包的方法
  • python下用os.execl执行centos下的系统时间同步命令ntpdate
  • 不小心把linux自带的python卸载了,导致安装一个依赖原python的软件不能安装,请问该怎么办?
  • Python namedtuple对象json序列化/反序列化及对象恢复
  • Python开发者社区整站源码 Pythoner
  • Python获取网页编码的方法及示例代码
  • python读取csv文件示例(python操作csv)
  • Python异常模块traceback用法举例
  • python基础教程之python消息摘要算法使用示例
  • python之平台独立的调试工具winpdb介绍
  • 新手该如何学python怎么学好python?
  • 基于Python的Html/xml解析库Beautiful Soup 4.2.1发布
  • 使用python删除nginx缓存文件示例(python文件操作)
  • 测试Python内部类型及type和isinstance用法区别
  • python学习手册中的python多态示例代码
  • Python3中内置类型bytes和str用法及byte和string之间各种编码转换
  • 请教:system("C:\python2.4\python.exe C:\aa.py");该语句有何错误?为什么运行界面一闪就消失了并且没有运行完,请给出正确语句!
  • Python namedtuple(命名元组)使用实例
  • python版本的问题


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3