python基于pyDes库实现des加密的方法


Posted in Python onApril 29, 2017

本文实例讲述了python基于pyDes库实现des加密的方法。分享给大家供大家参考,具体如下:

下载及简介地址:https://twhiteman.netfirms.com/des.html

如需要在python中使用des加密,可以直接使用pyDes库加密,该库提供了CBCECB两种加密方式。

1、Windows下安装

下载后pyDes-x.x.x.zip并解压后,里面有setup.py文件,使用命令 setup.py --help可查看详细使用。

你可以使用命令python setup.py install命令安装,也可以直接将压缩包内的pyDes.py拷贝到本地的python lib库下直接开始使用

2、 使用

使用参数如下(拷贝自上述提供的地址):

Class initialization
--------------------
pyDes.des(key, [mode], [IV], [pad], [padmode])
pyDes.triple_des(key, [mode], [IV], [pad], [padmode])
key     -> Bytes containing the encryption key. 8 bytes for DES, 16 or 24 bytes
    for Triple DES
mode    -> Optional argument for encryption type, can be either
    pyDes.ECB (Electronic Code Book) or pyDes.CBC (Cypher Block Chaining)
IV      -> Optional Initial Value bytes, must be supplied if using CBC mode.
    Length must be 8 bytes.
pad     -> Optional argument, set the pad character (PAD_NORMAL) to use during
    all encrypt/decrpt operations done with this instance.
padmode -> Optional argument, set the padding mode (PAD_NORMAL or PAD_PKCS5)
    to use during all encrypt/decrpt operations done with this instance.
I recommend to use PAD_PKCS5 padding, as then you never need to worry about any
padding issues, as the padding can be removed unambiguously upon decrypting
data that was encrypted using PAD_PKCS5 padmode.

Common methods
--------------
encrypt(data, [pad], [padmode])
decrypt(data, [pad], [padmode])
data    -> Bytes to be encrypted/decrypted
pad     -> Optional argument. Only when using padmode of PAD_NORMAL. For
    encryption, adds this characters to the end of the data block when
    data is not a multiple of 8 bytes. For decryption, will remove the
    trailing characters that match this pad character from the last 8
    bytes of the unencrypted data block.
padmode -> Optional argument, set the padding mode, must be one of PAD_NORMAL
    or PAD_PKCS5). Defaults to PAD_NORMAL

Example:

from pyDes import *
# For Python3, you'll need to use bytes, i.e.:
#  data = b"Please encrypt my data"
#  k = des(b"DESCRYPT", CBC, b"\0\0\0\0\0\0\0\0", pad=None, padmode=PAD_PKCS5)
data = "Please encrypt my data"
k = des("DESCRYPT", CBC, "\0\0\0\0\0\0\0\0", pad=None, padmode=PAD_PKCS5)
d = k.encrypt(data)
print "Encrypted: %r" % d
print "Decrypted: %r" % k.decrypt(d)
assert k.decrypt(d, padmode=PAD_PKCS5) == dat

以下是本人使用的例子,使用CBC加密的方式:

import base64
from pyDes import *
Des_Key = "BHC#@*UM" # Key
Des_IV = "\x22\x33\x35\x81\xBC\x38\x5A\xE7" # 自定IV向量
def DesEncrypt(str):
  k = des(Des_Key, CBC, Des_IV, pad=None, padmode=PAD_PKCS5)
  EncryptStr = k.encrypt(str)
  return base64.b64encode(EncryptStr) #转base64编码返回
Python 相关文章推荐
python的tkinter布局之简单的聊天窗口实现方法
Sep 03 Python
Python 详解基本语法_函数_返回值
Jan 22 Python
教你使用python实现微信每天给女朋友说晚安
Mar 23 Python
举例讲解Python常用模块
Mar 08 Python
Python上下文管理器用法及实例解析
Nov 11 Python
Python监控服务器实用工具psutil使用解析
Dec 19 Python
tensorflow生成多个tfrecord文件实例
Feb 17 Python
python使用pyecharts库画地图数据可视化的实现
Mar 25 Python
python实现将中文日期转换为数字日期
Jul 14 Python
python通过cython加密代码
Dec 11 Python
用gpu训练好的神经网络,用tensorflow-cpu跑出错的原因及解决方案
Mar 03 Python
Python干货实战之八音符酱小游戏全过程详解
Oct 24 Python
Python简单实现Base64编码和解码的方法
Apr 29 #Python
Python变量和字符串详解
Apr 29 #Python
python实现unicode转中文及转换默认编码的方法
Apr 29 #Python
Python 正则表达式实现计算器功能
Apr 29 #Python
python中类变量与成员变量的使用注意点总结
Apr 29 #Python
Python urls.py的三种配置写法实例详解
Apr 28 #Python
Python HTTP客户端自定义Cookie实现实例
Apr 28 #Python
You might like
mysql 全文搜索 技巧
2007/04/27 PHP
模板引擎正则表达式调试小技巧
2011/07/20 PHP
浅析php中json_encode()和json_decode()
2014/05/25 PHP
PHP模拟登陆163邮箱发邮件及获取通讯录列表的方法
2015/03/07 PHP
关于php开启错误提示的总结
2019/09/24 PHP
基于thinkphp6.0的success、error实现方法
2019/11/05 PHP
javascript 事件处理、鼠标拖动效果实现方法详解
2012/05/11 Javascript
js点击页面其它地方将某个显示的DIV隐藏
2012/07/12 Javascript
jQuery中$.fn的用法示例介绍
2013/11/05 Javascript
js Array操作的最简短最容易理解方法
2013/12/09 Javascript
jQuery截取指定长度字符串代码
2014/08/21 Javascript
jQuery实现表格行上移下移和置顶的方法
2015/05/22 Javascript
全面解析bootstrap格子布局
2016/05/22 Javascript
jquery模拟多级复选框效果的简单实例
2016/06/08 Javascript
移动端 一个简单易懂的弹出框
2016/07/06 Javascript
node+experss实现爬取电影天堂爬虫
2016/11/20 Javascript
Bootstrap导航条可点击和鼠标悬停显示下拉菜单
2016/11/25 Javascript
通过js控制时间,一秒一秒自己动的实例
2017/10/25 Javascript
浅析Node.js非对称加密方法
2018/01/29 Javascript
vue.js使用v-pre与v-html输出HTML操作示例
2018/07/07 Javascript
javascript中floor使用方法总结
2019/02/02 Javascript
vue和better-scroll实现列表左右联动效果详解
2019/04/29 Javascript
jQuery删除/清空指定元素的所有子节点实例代码
2019/07/04 jQuery
基于Angular 8和Bootstrap 4实现动态主题切换的示例代码
2020/02/11 Javascript
使用TS来编写express服务器的方法步骤
2020/10/29 Javascript
Python 读取某个目录下所有的文件实例
2018/06/23 Python
对Python中TKinter模块中的Label组件实例详解
2019/06/14 Python
在win64上使用bypy进行百度网盘文件上传功能
2020/01/02 Python
Python tkinter实现简单加法计算器代码实例
2020/05/13 Python
python设置中文界面实例方法
2020/10/27 Python
CSS3实现翘边的阴影效果的代码示例
2016/06/13 HTML / CSS
香港最新科技与优质家居产品购物网站:J SELECT
2018/08/21 全球购物
prAna官网:瑜伽、旅行和冒险服装
2019/03/10 全球购物
考试作弊被抓检讨书
2014/10/02 职场文书
婚礼领导致辞大全
2015/07/28 职场文书
mysql中整数数据类型tinyint详解
2021/12/06 MySQL