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批量导出导入MySQL用户的方法
Nov 15 Python
使用Python压缩和解压缩zip文件的教程
May 06 Python
Python Xml文件添加字节属性的方法
Mar 31 Python
浅谈python的dataframe与series的创建方法
Nov 12 Python
树莓派用python中的OpenCV输出USB摄像头画面
Jun 22 Python
Django CSRF跨站请求伪造防护过程解析
Jul 31 Python
python读文件的步骤
Oct 08 Python
python迭代器常见用法实例分析
Nov 22 Python
python中id函数运行方式
Jul 03 Python
python3通过subprocess模块调用脚本并和脚本交互的操作
Dec 05 Python
Python爬虫入门教程01之爬取豆瓣Top电影
Jan 24 Python
python数字图像处理:图像简单滤波
Jun 28 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下防止单引号,双引号在接受页面转义的设置方法
2008/09/25 PHP
超级好用的一个php上传图片类(随机名,缩略图,加水印)
2010/06/30 PHP
PHP中feof()函数实例测试
2014/08/23 PHP
php根据一个给定范围和步进生成数组的方法
2015/06/19 PHP
PHP 数组基本操作小结(推荐)
2016/06/13 PHP
laravel框架路由分组,中间件,命名空间,子域名,路由前缀实例分析
2020/02/18 PHP
如何在Mozilla Gecko 用Javascript加载XSL
2007/01/09 Javascript
JQuery与iframe交互实现代码
2009/12/24 Javascript
Jquery中getJSON在asp.net中的使用说明
2011/03/10 Javascript
使用JavaScript的AngularJS库编写hello world的方法
2015/06/23 Javascript
jquery合并表格中相同文本的相邻单元格
2015/07/17 Javascript
Jquery实现瀑布流布局(备有详细注释)
2015/07/31 Javascript
九种原生js动画效果
2015/11/11 Javascript
Node.js实用代码段之正确拼接Buffer
2016/03/17 Javascript
JavaScript 2048 游戏实例代码(简单易懂)
2016/03/25 Javascript
Vue.js开发环境快速搭建教程
2017/03/17 Javascript
基于JQuery的Ajax方法使用详解
2017/08/16 jQuery
javascript Function函数理解与实战
2017/12/01 Javascript
Vuejs+vue-router打包+Nginx配置的实例
2018/09/20 Javascript
vuex的数据渲染与修改浅析
2020/11/26 Vue.js
Python获取单个程序CPU使用情况趋势图
2015/03/10 Python
python实现网站的模拟登录
2016/01/04 Python
python实现单线程多任务非阻塞TCP服务端
2017/06/13 Python
python 按照固定长度分割字符串的方法小结
2018/04/30 Python
Python 按字典dict的键排序,并取出相应的键值放于list中的实例
2019/02/12 Python
Python 列表的清空方式
2020/01/13 Python
Python json解析库jsonpath原理及使用示例
2020/11/25 Python
使用CSS3实现input多选框自定义样式的方法示例
2019/07/19 HTML / CSS
html5 css3网站菜单实现代码
2013/12/23 HTML / CSS
业务总经理岗位职责
2014/02/03 职场文书
记帐员岗位责任制
2014/02/08 职场文书
社会实践评语
2014/04/28 职场文书
个人简历自荐信
2014/06/26 职场文书
仓库统计员岗位职责
2015/04/14 职场文书
社区节水倡议书
2015/04/29 职场文书
零基础学java之带返回值的方法的定义和调用
2022/04/10 Java/Android