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编码时应该注意的几个情况
Mar 04 Python
Python中实现三目运算的方法
Jun 21 Python
对Tensorflow中权值和feature map的可视化详解
Jun 14 Python
Python基于jieba库进行简单分词及词云功能实现方法
Jun 16 Python
Django使用paginator插件实现翻页功能的实例
Oct 24 Python
python微信好友数据分析详解
Nov 19 Python
Python控制键盘鼠标pynput的详细用法
Jan 28 Python
用Pelican搭建一个极简静态博客系统过程解析
Aug 22 Python
python实现LRU热点缓存及原理
Oct 29 Python
pytorch中tensor.expand()和tensor.expand_as()函数详解
Dec 27 Python
Pytorch 实现数据集自定义读取
Jan 18 Python
python中Pexpect的工作流程实例讲解
Mar 02 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桌面中心(三) 修改数据库
2007/03/11 PHP
如何在HTML 中嵌入 PHP 代码
2015/05/13 PHP
PHP使用观察者模式处理异常信息的方法详解
2019/09/24 PHP
php实现JWT(json web token)鉴权实例详解
2019/11/05 PHP
数组方法解决JS字符串连接性能问题有争议
2011/01/12 Javascript
javascript之bind使用介绍
2011/10/09 Javascript
jquery索引在使用中的一些困惑
2013/10/24 Javascript
JavaScript避免内存泄露及内存管理技巧
2014/09/05 Javascript
Javascript数组与字典用法分析
2014/12/13 Javascript
再次谈论Javascript中的this
2016/06/23 Javascript
jQuery EasyUI学习教程之datagrid点击列表头排序
2016/07/09 Javascript
用jquery快速解决IE输入框不能输入的问题
2016/10/04 Javascript
JavaScript SHA-256加密算法详细代码
2016/10/06 Javascript
js数组常用最重要的方法
2018/02/04 Javascript
vue组件tabbar使用方法详解
2018/11/06 Javascript
vue实现路由不变的情况下,刷新页面操作示例
2020/02/02 Javascript
vue webpack build资源相对路径的问题及解决方法
2020/06/04 Javascript
jQuery实现简单轮播图效果
2020/12/27 jQuery
Python实现将一个正整数分解质因数的方法分析
2017/12/14 Python
Python操作rabbitMQ的示例代码
2019/03/19 Python
wxPython色环电阻计算器
2019/11/18 Python
详解Python中字符串前“b”,“r”,“u”,“f”的作用
2019/12/18 Python
Python操作Sqlite正确实现方法解析
2020/02/05 Python
python3 googletrans超时报错问题及翻译工具优化方案 附源码
2020/12/23 Python
VSCode中autopep8无法运行问题解决方案(提示Error: Command failed,usage)
2021/03/02 Python
宾馆总经理岗位职责
2014/02/14 职场文书
学期评语大全
2014/04/30 职场文书
创先争优一句话承诺
2014/05/29 职场文书
四风问题查摆材料
2014/08/25 职场文书
纪念9.18事变演讲稿
2014/09/14 职场文书
致百米运动员广播稿5篇
2014/10/13 职场文书
逃课检讨书
2015/01/26 职场文书
2015年公民道德宣传日活动总结
2015/03/23 职场文书
结婚典礼致辞
2015/07/28 职场文书
2016年大学迎新工作总结
2015/10/14 职场文书
2016先进工作者事迹材料
2016/02/25 职场文书