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 相关文章推荐
分享15个最受欢迎的Python开源框架
Jul 13 Python
Python2.x版本中基本的中文编码问题解决
Oct 12 Python
浅谈numpy数组的几种排序方式
Dec 15 Python
python 读取txt,json和hdf5文件的实例
Jun 05 Python
Python实现处理逆波兰表达式示例
Jul 30 Python
浅析PEP570新语法: 只接受位置参数
Oct 15 Python
Python3 元组tuple入门基础
Feb 09 Python
Python requests.post方法中data与json参数区别详解
Apr 30 Python
基于Python pyecharts实现多种图例代码解析
Aug 10 Python
Python: glob匹配文件的操作
Dec 11 Python
Python使用pyenv实现多环境管理
Feb 05 Python
Python实现生成bmp图像的方法
Jun 13 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/11/16 PHP
php自动适应范围的分页代码
2008/08/05 PHP
提高define性能的php扩展hidef的安装和使用
2011/06/14 PHP
PHP实现负载均衡下的session共用功能
2018/04/17 PHP
PHP随机数函数rand()与mt_rand()的讲解
2019/03/25 PHP
Centos7 Yum安装PHP7.2流程教程详解
2019/07/02 PHP
JavaScript 特殊字符
2007/04/05 Javascript
jQuery.fn和jQuery.prototype区别介绍
2013/10/05 Javascript
javascript在当前窗口关闭前检测窗口是否关闭
2014/09/29 Javascript
Dojo Javascript 编程规范 规范自己的JavaScript书写
2014/10/26 Javascript
jquery实现Slide Out Navigation滑出式菜单效果代码
2015/09/07 Javascript
基于jQuery仿淘宝产品图片放大镜代码分享
2020/06/23 Javascript
JS实现样式清新的横排下拉菜单效果
2015/10/09 Javascript
JavaScript中捕获/阻止捕获、冒泡/阻止冒泡方法
2016/12/07 Javascript
原生js实现电商侧边导航效果
2017/01/19 Javascript
jquery实现轮播图效果
2017/02/13 Javascript
一步步教会你微信小程序的登录鉴权
2018/04/09 Javascript
关于vue中的ajax请求和axios包问题
2018/04/19 Javascript
Koa 中的错误处理解析
2019/04/09 Javascript
jQuery实现颜色打字机的完整代码
2020/03/19 jQuery
Python实现简单字典树的方法
2016/04/29 Python
实例讲解Python中SocketServer模块处理网络请求的用法
2016/06/28 Python
利用Python实现命令行版的火车票查看器
2016/08/05 Python
python递归全排列实现方法
2018/08/18 Python
python判断完全平方数的方法
2018/11/13 Python
python实现音乐播放和下载小程序功能
2020/04/26 Python
解决pycharm导入本地py文件时,模块下方出现红色波浪线的问题
2020/06/01 Python
Python logging日志库空间不足问题解决
2020/09/14 Python
python3实现飞机大战
2020/11/29 Python
Omio俄罗斯:一次搜索公共汽车、火车和飞机的机票
2018/11/17 全球购物
Stio官网:男女、儿童户外服装
2019/12/13 全球购物
华美博弈C/VC工程师笔试试题
2012/07/16 面试题
一套SQL笔试题
2016/08/14 面试题
教师批评与自我批评(群众路线)
2014/10/15 职场文书
python用tkinter开发的扫雷游戏
2021/06/01 Python
Python中使用ipython的详细教程
2021/06/22 Python