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读取csv文件示例(python操作csv)
Mar 11 Python
Python的Bottle框架的一些使用技巧介绍
Apr 08 Python
解析Python中的异常处理
Apr 28 Python
Python简单的制作图片验证码实例
May 31 Python
Python下载网络小说实例代码
Feb 03 Python
python的pandas工具包,保存.csv文件时不要表头的实例
Jun 14 Python
python中class的定义及使用教程
Sep 18 Python
python带参数打包exe及调用方式
Dec 21 Python
python GUI编程(Tkinter) 创建子窗口及在窗口上用图片绘图实例
Mar 04 Python
opencv+python实现鼠标点击图像,输出该点的RGB和HSV值
Jun 02 Python
完美解决python针对hdfs上传和下载的问题
Jun 05 Python
python中requests库+xpath+lxml简单使用
Apr 29 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
后宫无数却洁身自好的男主,唐三只爱小舞
2020/03/02 国漫
利用discuz实现PHP大文件上传应用实例代码
2008/11/14 PHP
PHP If Else(elsefi) 语句
2013/04/07 PHP
PHP实现根据数组的值进行分组的方法
2017/04/20 PHP
php处理静态页面:页面设置缓存时间实例
2017/06/22 PHP
PHP中散列密码的安全性分析
2019/07/26 PHP
php array_map()函数实例用法
2021/03/03 PHP
js Math 对象的方法
2013/09/01 Javascript
js获取当月最后一天实例代码
2013/11/19 Javascript
JS中attr和prop属性的区别以及优先选择示例介绍
2014/06/30 Javascript
JS获得选取checkbox整行数据的方法
2015/01/28 Javascript
JS实现带关闭功能的阿里妈妈网站顶部滑出banner工具条代码
2015/09/17 Javascript
深入探讨前端框架react
2015/12/09 Javascript
Javascript 动态改变imput type属性
2016/11/01 Javascript
如何提高Dom访问速度
2017/01/05 Javascript
手把手教你把nodejs部署到linux上跑出hello world
2017/06/19 NodeJs
NodeJS链接MySql数据库的操作方法
2017/06/27 NodeJs
webpack-dev-server远程访问配置方法
2018/02/22 Javascript
vue页面离开后执行函数的实例
2018/03/13 Javascript
JavaScript递归函数解“汉诺塔”算法代码解析
2018/07/05 Javascript
微信小程序实现蒙版弹出窗功能
2019/09/17 Javascript
vue引入静态js文件的方法
2020/06/20 Javascript
Python实现改变与矩形橡胶的线条的颜色代码示例
2018/01/05 Python
使用python+whoosh实现全文检索
2019/12/09 Python
tensorflow入门:tfrecord 和tf.data.TFRecordDataset的使用
2020/01/20 Python
python删除文件、清空目录的实现方法
2020/09/23 Python
英国Lookfantastic中文网站:护肤品美妆美发购物(英国直邮)
2020/04/27 全球购物
汽车驾驶求职信
2013/10/25 职场文书
会计电算化专业自荐信
2014/03/15 职场文书
2014年幼儿园教师工作总结
2014/11/08 职场文书
2014年计划生育协会工作总结
2014/11/14 职场文书
2015会计试用期工作总结
2014/12/12 职场文书
简历中自我评价范文
2015/03/11 职场文书
试用期解除劳动合同通知书
2015/04/16 职场文书
项目投资意向书范本
2015/05/09 职场文书
详细介绍python操作RabbitMq
2022/04/12 Python