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实现dict版图遍历示例
Feb 19 Python
Python开发实例分享bt种子爬虫程序和种子解析
May 21 Python
python re正则表达式模块(Regular Expression)
Jul 16 Python
Python使用Supervisor来管理进程的方法
May 28 Python
python实现自动发送邮件发送多人、群发、多附件的示例
Jan 23 Python
python去重,一个由dict组成的list的去重示例
Jan 21 Python
对Python中DataFrame选择某列值为XX的行实例详解
Jan 29 Python
元组列表字典(莫烦python基础)
Apr 03 Python
Flask框架工厂函数用法实例分析
May 25 Python
python爬虫-模拟微博登录功能
Sep 12 Python
Python实现一个简单的递归下降分析器
Aug 01 Python
python Matplotlib基础--如何添加文本和标注
Jan 26 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中文本数据翻页(留言本翻页)
2006/10/09 PHP
php木马攻击防御之道
2008/03/24 PHP
Windows下的PHP安装文件线程安全和非线程安全的区别
2014/04/23 PHP
codeigniter发送邮件并打印调试信息的方法
2015/03/21 PHP
php实现按天数、星期、月份查询的搜索框
2016/05/02 PHP
如何让动态插入的javascript脚本代码跑起来。
2007/01/09 Javascript
javascript 跳转代码集合
2009/12/03 Javascript
firefox firebug中文入门教程 脚本之家新年特别版
2010/01/02 Javascript
js控制table合并具体实现
2014/02/20 Javascript
深入分析Javascript事件代理
2016/01/30 Javascript
简介BootStrap model弹出框的使用
2016/04/27 Javascript
微信小程序 教程之列表渲染
2016/10/18 Javascript
JavaScript中数组Array.sort()排序方法详解
2017/03/01 Javascript
Vue.js 父子组件通信的十种方式
2018/10/30 Javascript
js中this的指向问题归纳总结
2018/11/28 Javascript
JavaScript格式化json和xml的方法示例
2019/01/22 Javascript
微信小程序网络层封装的实现(promise, 登录锁)
2019/05/08 Javascript
Vue.js@2.6.10更新内置错误处机制Fundebug同步支持相应错误监控
2019/05/13 Javascript
vue 动态添加class,三个以上的条件做判断方式
2020/11/02 Javascript
[01:01:04]2018DOTA2亚洲邀请赛 4.5 淘汰赛 OpTic vs TNC 第一场
2018/04/06 DOTA
python3实现绘制二维点图
2019/12/04 Python
TensorFlow tf.nn.conv2d实现卷积的方式
2020/01/03 Python
彻底搞懂 python 中文乱码问题(深入分析)
2020/02/28 Python
自定义Django默认的sitemap站点地图样式
2020/03/04 Python
Tkinter中复选菜单是否被选中的判断与设置方式
2020/03/04 Python
用python发送微信消息
2020/12/21 Python
一款纯css3实现的圆形旋转分享按钮旋转角度可自己调整
2014/09/02 HTML / CSS
Trunki英国官网:儿童坐骑式行李箱
2017/05/30 全球购物
晚归检讨书
2014/02/19 职场文书
党性观念心得体会
2014/09/03 职场文书
保护环境建议书作文400字
2015/09/14 职场文书
土木工程生产实习心得体会
2016/01/22 职场文书
《假如》教学反思
2016/02/17 职场文书
《角的度量》教学反思
2016/02/18 职场文书
idea 在springboot中使用lombok插件的方法
2021/08/02 Java/Android
MySQL中一条SQL查询语句是如何执行的
2022/04/08 MySQL