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下载FTP上的文件夹的实现代码
Feb 10 Python
Python函数参数类型*、**的区别
Apr 11 Python
python使用matplotlib模块绘制多条折线图、散点图
Apr 26 Python
Python远程视频监控程序的实例代码
May 05 Python
python实现静态web服务器
Sep 03 Python
Python openpyxl读取单元格字体颜色过程解析
Sep 03 Python
python可视化实现KNN算法
Oct 16 Python
py-charm延长试用期限实例
Dec 22 Python
基于python检查矩阵计算结果
May 21 Python
pytorch掉坑记录:model.eval的作用说明
Jun 23 Python
scrapy利用selenium爬取豆瓣阅读的全步骤
Sep 20 Python
Python如何telnet到网络设备
Feb 18 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
漂亮但不安全的CTB
2006/10/09 PHP
php数组总结篇(一)
2008/09/30 PHP
PHP设置图片文件上传大小的具体实现方法
2013/10/11 PHP
apache和PHP如何整合在一起
2015/10/12 PHP
ThinkPHP防止重复提交表单的方法实例分析
2018/05/10 PHP
jquery 事件执行检测代码
2009/12/09 Javascript
javascript getElementsByClassName实现代码
2010/10/11 Javascript
jquery实现的蓝色二级导航条效果代码
2015/08/24 Javascript
node.js连接mongoDB数据库 快速搭建自己的web服务
2016/04/17 Javascript
vue中渐进过渡效果实现
2016/10/27 Javascript
jquery实现点击a链接,跳转之后,该a链接处显示背景色的方法
2018/01/18 jQuery
webpack热模块替换(HMR)/热更新的方法
2018/04/05 Javascript
js打开word文档预览操作示例【不是下载】
2019/05/23 Javascript
layui字体图标 loading图标静止不旋转的解决方法
2019/09/23 Javascript
[01:51]2014DOTA2国际邀请赛 这个赛场没有失败者VGTi5再见
2014/07/23 DOTA
[46:37]LGD vs TNC 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
[00:56]PWL开团时刻DAY8——追追追追追!
2020/11/09 DOTA
Python生成验证码实例
2014/08/21 Python
Python基于PyGraphics包实现图片截取功能的方法
2017/12/21 Python
python操作excel的包(openpyxl、xlsxwriter)
2018/06/11 Python
Python 利用scrapy爬虫通过短短50行代码下载整站短视频
2018/10/29 Python
对python dataframe逻辑取值的方法详解
2019/01/30 Python
在django中图片上传的格式校验及大小方法
2019/07/28 Python
python爬虫之遍历单个域名
2019/11/20 Python
使用ITK-SNAP进行抠图操作并保存mask的实例
2020/07/01 Python
深入浅析Python代码规范性检测
2020/07/31 Python
python的flask框架难学吗
2020/07/31 Python
售后主管岗位职责
2013/12/08 职场文书
实习生的自我评价
2014/01/08 职场文书
班级入场式解说词
2014/02/01 职场文书
艺人经纪人岗位职责
2014/04/15 职场文书
旅游专业毕业生自荐书
2014/06/30 职场文书
家具商场的活动方案
2014/08/16 职场文书
2015年生活老师工作总结
2015/05/27 职场文书
党支部意见范文
2015/06/02 职场文书
史上最全的军训拉歌口号
2015/12/25 职场文书