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 相关文章推荐
Django与遗留的数据库整合的方法指南
Jul 24 Python
Python实现二维有序数组查找的方法
Apr 27 Python
Python正则表达式知识汇总
Sep 22 Python
取numpy数组的某几行某几列方法
Apr 03 Python
python3中os.path模块下常用的用法总结【推荐】
Sep 16 Python
在Django model中设置多个字段联合唯一约束的实例
Jul 17 Python
Python二维数组实现求出3*3矩阵对角线元素的和示例
Nov 29 Python
python实现简单日志记录库glog的使用
Dec 13 Python
python实现拼图小游戏
Feb 22 Python
Python找出列表中出现次数最多的元素三种方式
Feb 24 Python
Python自动化测试PO模型封装过程详解
Jun 22 Python
Elasticsearch 聚合查询和排序
Apr 19 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安全防范技巧分享
2011/11/03 PHP
php使用curl模拟登录后采集页面的例子
2013/11/04 PHP
php采集内容中带有图片地址的远程图片并保存的方法
2015/01/03 PHP
php使用timthumb生成缩略图的方法
2016/01/22 PHP
PHP删除二维数组中相同元素及数组重复值的方法示例
2017/05/05 PHP
小程序微信退款功能实现方法详解【基于thinkPHP】
2019/05/05 PHP
javascript编程起步(第五课)
2007/01/10 Javascript
javascript实现Table间隔色以及选择高亮(和动态切换数据)的方法
2015/05/14 Javascript
JS组件系列之Bootstrap table表格组件神器【二、父子表和行列调序】
2016/05/10 Javascript
JS中正则表达式只有3种匹配模式(没有单行模式)详解
2016/07/28 Javascript
一个极为简单的requirejs实现方法
2016/10/20 Javascript
div中文字内容溢出常见的解决方法
2017/03/16 Javascript
js实现一个简单的数字时钟效果
2017/03/29 Javascript
angularjs路由传值$routeParams详解
2020/09/05 Javascript
vue-router3.0版本中 router.push 不能刷新页面的问题
2018/05/10 Javascript
JS 数组随机洗牌的实例代码
2018/09/12 Javascript
Vue监听事件实现计数点击依次增加的方法
2018/09/26 Javascript
vue-cli3添加模式配置多环境变量的方法
2019/06/05 Javascript
微信小程序发布新版本时自动提示用户更新的方法
2019/06/07 Javascript
Layer.js实现表格溢出内容省略号显示,悬停显示全部的方法
2019/09/16 Javascript
JS实现电脑虚拟键盘的操作
2020/06/24 Javascript
vue 使用 sortable 实现 el-table 拖拽排序功能
2020/12/26 Vue.js
python逐行读取文件内容的三种方法
2014/01/20 Python
python寻找list中最大值、最小值并返回其所在位置的方法
2018/06/27 Python
对pandas读取中文unicode的csv和添加行标题的方法详解
2018/12/12 Python
Python谱减法语音降噪实例
2019/12/18 Python
基于Python3.6中的OpenCV实现图片色彩空间的转换
2020/02/03 Python
Python判断三段线能否构成三角形的代码
2020/04/12 Python
施华洛世奇水晶荷兰官方网站:SWAROVSKI荷兰
2017/05/12 全球购物
教你怎样写好自我评价
2013/10/05 职场文书
生物制药毕业生自荐信
2013/10/16 职场文书
新闻系毕业生推荐信
2013/11/16 职场文书
2015年仓管员工作总结
2015/04/21 职场文书
企业催款函范本
2015/06/24 职场文书
解决Python中的modf()函数取小数部分不准确问题
2021/05/28 Python
javascript拖曳互换div的位置实现示例
2021/06/28 Javascript