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


Posted in Python onJanuary 19, 2014

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 相关文章推荐
python获得linux下所有挂载点(mount points)的方法
Apr 29 Python
自动化Nginx服务器的反向代理的配置方法
Jun 28 Python
Python编程中使用Pillow来处理图像的基础教程
Nov 20 Python
深入解析Python中函数的参数与作用域
Mar 20 Python
Python使用MD5加密算法对字符串进行加密操作示例
Mar 30 Python
python处理数据,存进hive表的方法
Jul 04 Python
Numpy将二维数组添加到空数组的实现
Dec 05 Python
Keras:Unet网络实现多类语义分割方式
Jun 11 Python
python利用paramiko实现交换机巡检的示例
Sep 22 Python
python使用yaml 管理selenium元素的示例
Dec 01 Python
python 实现的IP 存活扫描脚本
Dec 10 Python
python执行js代码的方法
May 13 Python
python实现人人网登录示例分享
Jan 19 #Python
使用BeautifulSoup爬虫程序获取百度搜索结果的标题和url示例
Jan 19 #Python
压缩包密码破解示例分享(类似典破解)
Jan 17 #Python
vc6编写python扩展的方法分享
Jan 17 #Python
python的urllib模块显示下载进度示例
Jan 17 #Python
Python中for循环详解
Jan 17 #Python
python在命令行下使用google翻译(带语音)
Jan 16 #Python
You might like
jQuery 扩展对input的一些操作方法
2009/10/30 Javascript
Javascript(AJAX)解析XML的代码(兼容FIREFOX/IE)
2010/07/11 Javascript
jquery绑定原理 简单解析与实现代码分享
2011/09/06 Javascript
jquery实现table鼠标经过变色代码
2013/09/25 Javascript
浅析Js中的单引号与双引号问题
2013/11/06 Javascript
javascript伸缩菜单栏实现代码分享
2015/11/12 Javascript
CSS中position属性之fixed实现div居中
2015/12/14 Javascript
JavaScript+CSS实现的可折叠二级菜单实例
2016/02/29 Javascript
javascript实现数组去重的多种方法
2016/03/14 Javascript
详解vue中computed 和 watch的异同
2017/06/30 Javascript
JavaScript中的return布尔值的用法和原理解析
2017/08/14 Javascript
详解webpack3如何正确引用并使用jQuery库
2017/08/26 jQuery
JS实现百度搜索框关键字推荐
2020/02/17 Javascript
JavaScript实现PC端四格密码输入框功能
2020/02/19 Javascript
基于better-scroll 实现歌词联动功能的代码
2020/05/07 Javascript
Python的Tornado框架异步编程入门实例
2015/04/24 Python
python从入门到精通(DAY 1)
2015/12/20 Python
Python实现的随机森林算法与简单总结
2018/01/30 Python
Pandas之Dropna滤除缺失数据的实现方法
2019/06/25 Python
python实现在函数中修改变量值的方法
2019/07/16 Python
opencv 查找连通区域 最大面积实例
2020/06/04 Python
通过实例解析Python文件操作实现步骤
2020/09/21 Python
美国综合购物商城:UnbeatableSale.com
2018/11/28 全球购物
c++工程师面试问题
2013/08/04 面试题
mysql有关权限的表都有哪几个
2015/04/22 面试题
高中生自我评语大全
2014/01/19 职场文书
渡河少年教学反思
2014/02/12 职场文书
项目建议书范文
2014/05/12 职场文书
作风建设演讲稿
2014/05/23 职场文书
电子商务专业自荐信
2014/06/02 职场文书
挂职学习心得体会
2014/09/09 职场文书
购房委托书
2014/10/15 职场文书
入伍通知书
2015/04/23 职场文书
煤矿隐患排查制度
2015/08/05 职场文书
多台电脑共享文件怎么设置?多台电脑共享文件操作教程
2022/04/08 数码科技
Apache SkyWalking 监控 MySQL Server 实战解析
2022/09/23 Servers