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 相关文章推荐
wxpython 学习笔记 第一天
Mar 16 Python
python选择排序算法的实现代码
Nov 21 Python
python使用PyGame模块播放声音的方法
May 20 Python
Python3一行代码实现图片文字识别的示例
Jan 15 Python
解决Python pandas df 写入excel 出现的问题
Jul 04 Python
Python访问MongoDB,并且转换成Dataframe的方法
Oct 15 Python
使用Python画股票的K线图的方法步骤
Jun 28 Python
python函数参数(必须参数、可变参数、关键字参数)
Aug 16 Python
Python 基于wxpy库实现微信添加好友功能(简洁)
Nov 29 Python
django admin后管定制-显示字段的实例
Mar 11 Python
Python 判断时间是否在时间区间内的实例
May 16 Python
Python延迟绑定问题原理及解决方案
Aug 04 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禁止页面缓存的代码
2011/10/23 PHP
php实现复制移动文件的方法
2015/07/29 PHP
基于Jquery的淡入淡出的特效基础练习
2010/12/13 Javascript
在VS2008中使用jQuery智能感应的方法
2010/12/30 Javascript
js控制的遮罩层实例介绍
2013/05/29 Javascript
js文本框输入点回车触发确定兼容IE、FF等
2013/11/19 Javascript
IE8下Jquery获取select选中的值post到后台报错问题
2014/07/02 Javascript
用javascript读取xml文件读取节点数据
2014/08/12 Javascript
基于jquery实现等比缩放图片
2014/12/03 Javascript
jquery增加和删除元素的方法
2015/01/14 Javascript
js+ajax实现获取文件大小的方法
2015/12/08 Javascript
概述BootStrap中role="form"及role作用角色
2016/12/08 Javascript
Vue.js实现文章评论和回复评论功能
2020/05/30 Javascript
Angular2搜索和重置按钮过场动画
2017/05/24 Javascript
Node之简单的前后端交互(实例讲解)
2017/11/14 Javascript
JS实现求5的阶乘示例
2019/01/21 Javascript
vue多层嵌套路由实例分析
2019/03/19 Javascript
微信小程序学习总结(三)条件、模板、文件引用实例分析
2020/06/04 Javascript
jQuery实现手风琴特效
2021/01/11 jQuery
[59:30]VG vs LGD 2019国际邀请赛淘汰赛 胜者组 BO3 第二场 8.22
2019/09/05 DOTA
[01:04:29]DOTA2-DPC中国联赛 正赛 Phoenix vs XG BO3 第二场 1月31日
2021/03/11 DOTA
基于使用paramiko执行远程linux主机命令(详解)
2017/10/16 Python
python3设计模式之简单工厂模式
2017/10/17 Python
对python中的for循环和range内置函数详解
2018/04/17 Python
Python 字符串与数字输出方法
2018/07/16 Python
python实现基于信息增益的决策树归纳
2018/12/18 Python
详解python tkinter教程-事件绑定
2019/03/28 Python
Python使用docx模块实现刷题功能代码
2020/02/13 Python
pytorch读取图像数据转成opencv格式实例
2020/06/02 Python
旧时光糖果:Old Time Candy
2018/02/05 全球购物
介绍一下Mysql的存储引擎
2015/02/12 面试题
贷款委托书范本
2014/04/08 职场文书
老公给老婆的检讨书(精华篇)
2014/10/18 职场文书
2015年防汛工作总结
2015/05/15 职场文书
拯救大兵瑞恩观后感
2015/06/09 职场文书
2016年“世界环境日”校园广播稿
2015/12/18 职场文书