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写的创建文件夹自定义函数mkdir()
Aug 25 Python
python获取本地计算机名字的方法
Apr 29 Python
为什么选择python编程语言入门黑客攻防 给你几个理由!
Feb 02 Python
Python3.8中使用f-strings调试
May 22 Python
Python的numpy库下的几个小函数的用法(小结)
Jul 12 Python
flask框架jinja2模板与模板继承实例分析
Aug 01 Python
Python3 requests文件下载 期间显示文件信息和下载进度代码实例
Aug 16 Python
selenium+Chrome滑动验证码破解二(某某网站)
Dec 17 Python
如何基于python实现画不同品种的樱花树
Jan 03 Python
使用Python构造hive insert语句说明
Jun 06 Python
Python tkinter之Bind(绑定事件)的使用示例
Feb 05 Python
Python内置类型集合set和frozenset的使用详解
Apr 26 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
PHP UTF8编码内的繁简转换类
2009/07/20 PHP
PHP日期处理函数 整型日期格式
2011/01/12 PHP
PHP MVC框架skymvc支持多文件上传
2016/05/26 PHP
php文件操作之文件写入字符串、数组的方法分析
2019/04/15 PHP
JavaScript全局函数使用简单说明
2011/03/11 Javascript
Js 时间函数getYear()的使用问题探讨
2013/04/01 Javascript
浅谈javascript六种数据类型以及特殊注意点
2013/12/20 Javascript
jquery append()方法与html()方法的区别及使用介绍
2014/08/01 Javascript
node.js中的socket.io的广播消息
2014/12/15 Javascript
JS动态的把左边列表添加到右边的实现代码(可上下移动)
2016/11/17 Javascript
JavaScript实现瀑布流以及加载效果
2017/02/11 Javascript
javascript ES6中箭头函数注意细节小结
2017/02/17 Javascript
详解angular中的作用域及继承
2017/05/31 Javascript
vue 中自定义指令改变data中的值
2017/06/02 Javascript
javascript定时器取消定时器及优化方法
2017/07/08 Javascript
JavaScript实现时间表动态效果
2017/07/15 Javascript
vue打包使用Nginx代理解决跨域问题
2018/08/27 Javascript
基于Nodejs的Tcp封包和解包的理解
2018/09/19 NodeJs
jQuery使用$.extend(true,object1, object2);实现深拷贝对象的方法分析
2019/03/06 jQuery
vue--vuex详解
2019/04/15 Javascript
Layui点击图片弹框预览的实现方法
2019/09/16 Javascript
[01:21]2018DOTA2亚洲邀请赛4.5采访 打DOTA2也能有女朋友?
2018/04/06 DOTA
[01:14:30]TNC vs VG 2019国际邀请赛淘汰赛 胜者组赛BO3 第二场 8.20.mp4
2019/08/22 DOTA
Python中表示字符串的三种方法
2017/09/06 Python
python验证码识别教程之利用滴水算法分割图片
2018/06/05 Python
python正则表达式之对号入座篇
2018/07/24 Python
网易有道2017内推编程题 洗牌(python)
2019/06/19 Python
python编写微信公众号首图思路详解
2019/12/13 Python
英国领先的票务代理商之一:The Ticket Factory
2019/02/09 全球购物
意大利奢侈品零售商:ilDuomo Novara
2019/09/11 全球购物
JoJo Maman Bébé爱尔兰官网:英国最受欢迎的精品母婴品牌
2020/12/20 全球购物
项目投资建议书
2014/05/16 职场文书
活动总结范文
2014/08/30 职场文书
2015年大学组织委员个人工作总结
2015/10/23 职场文书
windows下快速安装nginx并配置开机自启动的方法
2021/05/11 Servers
Redis模仿手机验证码发送的实现示例
2021/11/02 Redis