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实现拉钩网上的FizzBuzzWhizz问题示例
May 05 Python
跟老齐学Python之通过Python连接数据库
Oct 28 Python
[原创]教女朋友学Python(一)运行环境搭建
Nov 29 Python
python使用socket创建tcp服务器和客户端
Apr 12 Python
matplotlib给子图添加图例的方法
Aug 03 Python
Python3爬虫使用Fidder实现APP爬取示例
Nov 27 Python
Python设计模式之解释器模式原理与用法实例分析
Jan 10 Python
Python 正则表达式爬虫使用案例解析
Sep 23 Python
Scrapy框架实现的登录网站操作示例
Feb 06 Python
python脚本和网页有何区别
Jul 02 Python
Python爬取某拍短视频
Jun 11 Python
python中使用 unittest.TestCase单元测试的用例详解
Aug 30 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
德生PL330的评价与改造
2021/03/02 无线电
用PHP调用数据库的存贮过程
2006/10/09 PHP
PHP下MAIL的另一解决方案
2006/10/09 PHP
一个简单的自动发送邮件系统(二)
2006/10/09 PHP
PHP通过header实现文本文件下载的代码
2010/08/08 PHP
php从文件夹随机读取文件的方法
2015/06/01 PHP
在openSUSE42.1下编译安装PHP7 的方法
2015/12/24 PHP
Laravel使用scout集成elasticsearch做全文搜索的实现方法
2018/11/30 PHP
不懂JavaScript应该怎样学
2008/04/16 Javascript
javascript 弹出窗口中是否显示地址栏的实现代码
2011/04/14 Javascript
javascript中的onkeyup和onkeydown区别介绍
2013/04/28 Javascript
window.onresize 多次触发的解决方法
2013/11/08 Javascript
JavaScript中判断整字类型最简洁的实现方法
2014/11/08 Javascript
JavaScript DOM事件(笔记)
2015/04/08 Javascript
jQuery AjaxUpload 上传图片代码
2016/02/02 Javascript
javascript实现任务栏消息提示的简单实例
2016/05/31 Javascript
json定义及jquery操作json的方法
2016/09/29 Javascript
JavaScript实现的鼠标响应颜色渐变效果完整实例
2017/02/18 Javascript
浅谈vue实现数据监听的函数 Object.defineProperty
2017/06/08 Javascript
Vue 将后台传过来的带html字段的字符串转换为 HTML
2018/03/29 Javascript
你应该了解的JavaScript Array.map()五种用途小结
2018/11/14 Javascript
Python 2.7.x 和 3.x 版本的重要区别小结
2014/11/28 Python
python 显示数组全部元素的方法
2018/04/19 Python
Python针对给定字符串求解所有子序列是否为回文序列的方法
2018/04/21 Python
python实现合并多个list及合并多个django QuerySet的方法示例
2019/06/11 Python
pytorch 常用函数 max ,eq说明
2020/06/28 Python
如何利用Python给自己的头像加一个小国旗(小月饼)
2020/10/02 Python
Python绘图实现台风路径可视化代码实例
2020/10/23 Python
GUESS德国官网:美国牛仔服装品牌
2017/02/14 全球购物
护士试用期自我鉴定
2014/02/08 职场文书
财务科科长岗位职责
2014/03/10 职场文书
食堂采购员岗位职责
2014/03/17 职场文书
大专应届毕业生求职信
2014/07/15 职场文书
公司委托书格式范本
2014/09/16 职场文书
民用住房租房协议书
2014/10/29 职场文书
研究生毕业登记表的自我鉴定范文
2019/07/15 职场文书