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批量查询域名是否被注册过
Jun 21 Python
利用Python-iGraph如何绘制贴吧/微博的好友关系图详解
Nov 02 Python
解决python3 urllib 链接中有中文的问题
Jul 16 Python
Python BS4库的安装与使用详解
Aug 08 Python
在pyqt5中QLineEdit里面的内容回车发送的实例
Jun 21 Python
Python实现平行坐标图的两种方法小结
Jul 04 Python
python打印9宫格、25宫格等奇数格 满足横竖斜相加和相等
Jul 19 Python
使用tensorflow DataSet实现高效加载变长文本输入
Jan 20 Python
使用Pytorch搭建模型的步骤
Nov 16 Python
Pycharm创建文件时自动生成文件头注释(自定义设置作者日期)
Nov 24 Python
python快速安装OpenCV的步骤记录
Feb 22 Python
python playwrigh框架入门安装使用
Jul 23 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
咖啡风味 世界咖啡主要分布分布 咖啡的生长要求
2021/03/06 新手入门
php出现Cannot modify header information问题的解决方法大全
2008/04/09 PHP
PHP数组实例总结与说明
2011/08/23 PHP
php中动态调用函数的方法
2015/03/16 PHP
10个值得深思的PHP面试题
2016/11/14 PHP
php原生导出excel文件的两种方法(推荐)
2016/11/19 PHP
Yii框架用户登录session丢失问题解决方法
2017/01/07 PHP
laravel-admin 管理平台获取当前登陆用户信息的例子
2019/10/08 PHP
gearman中任务的优先级和返回状态实例分析
2020/02/27 PHP
Fixie.js 自动填充内容的插件
2012/06/28 Javascript
JS中数组Array的用法示例介绍
2014/02/20 Javascript
jquery计算鼠标和指定元素之间距离的方法
2015/06/26 Javascript
JavaScript动态创建div等元素实例讲解
2016/01/06 Javascript
实例讲解jQuery中对事件的命名空间的运用
2016/05/24 Javascript
教你如何在Node.js中使用jQuery
2016/08/28 Javascript
AngularJs 动态加载模块和依赖
2016/09/15 Javascript
基于JS实现弹出一个隐藏的div窗口body页面变成灰色并且不可被编辑
2016/12/14 Javascript
js实现可输入可选择的select下拉框
2016/12/21 Javascript
vue bootstrap小例子一枚
2017/06/09 Javascript
使用vue构建一个上传图片表单
2017/07/04 Javascript
JS 中LocalStorage和SessionStorage的使用
2017/08/17 Javascript
vue 列表页跳转详情页获取id以及详情页通过id获取数据
2019/03/27 Javascript
Python基于property实现类的特性操作示例
2018/06/15 Python
对IPython交互模式下的退出方法详解
2019/02/16 Python
浅谈pytorch、cuda、python的版本对齐问题
2020/01/15 Python
python 非线性规划方式(scipy.optimize.minimize)
2020/02/11 Python
使用python实现飞机大战游戏
2020/03/23 Python
使用pytorch实现论文中的unet网络
2020/06/24 Python
Melissa香港官网:MDreams
2016/07/01 全球购物
英国现代市场:ARKET
2019/04/10 全球购物
Java里面如何创建一个内部类的实例
2015/01/19 面试题
EJB包括(SessionBean,EntityBean)说出他们的生命周期,及如何管理事务的?
2013/02/17 面试题
销售顾问的岗位职责
2013/11/13 职场文书
2014年道德讲堂实施方案
2014/03/05 职场文书
代理词怎么写
2015/05/25 职场文书
python for循环赋值问题
2021/06/03 Python