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脚本来控制Windows Azure的简单教程
Apr 16 Python
Python 使用SMTP发送邮件的代码小结
Sep 21 Python
python中利用Future对象回调别的函数示例代码
Sep 07 Python
基于python中pygame模块的Linux下安装过程(详解)
Nov 09 Python
基于Python实现的ID3决策树功能示例
Jan 02 Python
python ChainMap的使用和说明详解
Jun 11 Python
python多项式拟合之np.polyfit 和 np.polyld详解
Feb 18 Python
基于python实现ROC曲线绘制广场解析
Jun 28 Python
matplotlib绘制鼠标的十字光标的实现(内置方式)
Jan 06 Python
python tqdm用法及实例详解
Jun 16 Python
python ConfigParser库的使用及遇到的坑
Feb 12 Python
代码复现python目标检测yolo3详解预测
May 06 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
用函数读出数据表内容放入二维数组
2006/10/09 PHP
PHP4实际应用经验篇(7)
2006/10/09 PHP
php中用foreach来操作数组的代码
2011/07/17 PHP
简单介绍win7下搭建apache+php+mysql开发环境
2015/08/06 PHP
Yii数据模型中rules类验证器用法分析
2016/07/15 PHP
PHP 实现字符串翻转(包含中文汉字)的实现代码
2017/04/01 PHP
JavaScript 提升运行速度之循环篇 译文
2009/08/15 Javascript
JS多物体 任意值 链式 缓冲运动
2012/08/10 Javascript
弹出最简单的模式化遮罩层的js代码
2013/12/04 Javascript
javascript动态向网页中添加表格实现代码
2014/02/19 Javascript
JavaScript访问CSS属性的几种方式介绍
2014/07/21 Javascript
Vue 仿百度搜索功能实现代码
2017/02/16 Javascript
Vue组件Draggable实现拖拽功能
2018/12/01 Javascript
vue过滤器用法实例分析
2019/03/15 Javascript
Vue多环境代理配置方法思路详解
2019/06/21 Javascript
详解基于原生JS验证表单组件xy-form
2019/08/20 Javascript
使用layer.msg 时间设置不起作用的解决方法
2019/09/12 Javascript
React服务端渲染原理解析与实践
2021/03/04 Javascript
[47:18]完美世界DOTA2联赛循环赛 IO vs FTD BO2第一场 11.05
2020/11/06 DOTA
Python3实现Web网页图片下载
2016/01/28 Python
python bmp转换为jpg 并删除原图的方法
2018/10/25 Python
python实现扫描局域网指定网段ip的方法
2019/04/16 Python
python numpy数组中的复制知识解析
2020/02/03 Python
python绘制玫瑰的实现代码
2020/03/02 Python
HTML5 canvas实现移动端上传头像拖拽裁剪效果
2016/03/14 HTML / CSS
使用Html5实现异步上传文件,支持跨域,带有上传进度条
2016/09/17 HTML / CSS
美国购买新书和二手书网站:Better World Books
2018/10/31 全球购物
Java语言的优势
2015/01/10 面试题
大学生毕业自我鉴定范文
2013/11/03 职场文书
酒店公关部经理岗位职责
2013/11/24 职场文书
公司成立感言
2014/01/11 职场文书
2014年个人师德工作总结
2014/12/04 职场文书
2015年元旦主持词结束语
2014/12/14 职场文书
告诉你一个秘密:富人致富的五大优点
2019/07/11 职场文书
Win11查看设备管理器
2022/04/19 数码科技
如何利用python创作字符画
2022/06/25 Python