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生成随机密码或随机字符串的方法
Jul 03 Python
python 调用HBase的简单实例
Dec 18 Python
关于Python如何避免循环导入问题详解
Sep 14 Python
python主线程捕获子线程的方法
Jun 17 Python
python感知机实现代码
Jan 18 Python
详解Python匿名函数(lambda函数)
Apr 19 Python
NumPy 数组使用大全
Apr 25 Python
Numpy与Pytorch 矩阵操作方式
Dec 27 Python
Keras框架中的epoch、bacth、batch size、iteration使用介绍
Jun 10 Python
Restful_framework视图组件代码实例解析
Nov 17 Python
python3定位并识别图片验证码实现自动登录功能
Jan 29 Python
解决numpy和torch数据类型转化的问题
May 23 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
用文本文件制作留言板提示(下)
2006/10/09 PHP
基于mysql的论坛(4)
2006/10/09 PHP
php数组合并array_merge()函数使用注意事项
2014/06/19 PHP
WordPress导航菜单的滚动和淡入淡出效果的实现要点
2015/12/14 PHP
PHP实现的登录,注册及密码修改功能分析
2016/11/25 PHP
PHP实现基于回溯法求解迷宫问题的方法详解
2017/08/17 PHP
js使用正则实现ReplaceAll全部替换的方法
2014/08/22 Javascript
一个jquery实现的不错的多行文字图片滚动效果
2014/09/28 Javascript
简易的投票系统以及js刷票思路和方法
2015/04/07 Javascript
深入分析Javascript事件代理
2016/01/30 Javascript
Vue filters过滤器的使用方法
2017/07/14 Javascript
详解利用 Express 托管静态文件的方法
2017/09/18 Javascript
浅谈vue同一页面中拥有两个表单时,的验证问题
2018/09/18 Javascript
js实现盒子移动动画效果
2020/08/09 Javascript
Python中实现三目运算的方法
2015/06/21 Python
TensorFlow模型保存/载入的两种方法
2018/03/08 Python
python实现决策树分类
2018/08/30 Python
python设置随机种子实例讲解
2019/09/12 Python
numpy中三维数组中加入元素后的位置详解
2019/11/28 Python
TensorFlow设置日志级别的几种方式小结
2020/02/04 Python
Python多线程多进程实例对比解析
2020/03/12 Python
Python流程控制语句的深入讲解
2020/06/15 Python
Django DRF APIView源码运行流程详解
2020/08/17 Python
使用HTML5捕捉音频与视频信息概述及实例
2018/08/22 HTML / CSS
Tiqets荷兰:出售欧洲最美丽的景点和博物馆门票
2018/01/09 全球购物
新西兰网上购物,折扣店:BestDeals.co.nz
2019/03/20 全球购物
馥绿德雅美国官方网站:Rene Furterer头皮护理专家
2019/05/01 全球购物
计算机应用专业推荐信
2013/11/13 职场文书
八一建军节部队活动方案
2014/02/04 职场文书
《再别康桥》教学反思
2014/02/12 职场文书
中学生学雷锋演讲稿
2014/04/26 职场文书
学习雷锋月活动总结
2014/07/03 职场文书
小学见习报告
2015/06/23 职场文书
给朋友的赠语
2015/06/23 职场文书
2016教师党员学习心得体会
2016/01/21 职场文书
python opencv人脸识别考勤系统的完整源码
2021/04/26 Python