学逆向论坛

找回密码
立即注册

只需一步,快速开始

发新帖

1246

积分

6

好友

46

主题
发表于 2019-4-2 22:54:56 | 查看: 11379| 回复: 1
解密见这个——>利用pyDes库实现Des解密
先贴上代码:
from pyDes import CBC,des,PAD_PKCS5
import binascii
KEY="hellomcs"
str="123"
secret_key=KEY
iv=secret_key
d=des(secret_key,CBC,iv,pad=None,padmode=PAD_PKCS5)
k=d.encrypt(str,padmode=PAD_PKCS5)
print(binascii.b2a_hex(k))


CBC——加密模式(相对于EBC模式更安全)
KEY——密钥(必须8字节)
str——待加密字符串
pad——可选空
padmode——空或PAD_PKCS5模式

des的加密格式:des(key, [mode], [IV], [pad], [padmode])
三重加密:triple_des(key, [mode], [IV], [pad], [padmode])

methods:
可直接crypt数据或字符串
encrypt(str, [pad], [padmode])——加密
decrypt(str, [pad], [padmode])——解密


以下是pyDes说明文档:
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
-------



以下为上文翻译(英语能力有限,不太准确请见谅):
类的初始化
--------------------
pyDes.des(key, [mode], [IV], [pad], [padmode])
pyDes.triple_des(key, [mode], [IV], [pad], [padmode])


key     -> 含有加密密钥的字节。 DES为8字节,16或24字节用于三重DES
mode    -> 加密类型的可选参数可以是pyDes.ECB(电子密码本)或pyDes.CBC(密文分组链接)
IV      -> 使用CBC模式,必须提供可选的初始值字节。长度必须是8个字节。
pad     -> 可选参数,完成的所有加密/解密操作期间使用的填充字符(PAD NORMAL)。
padmode -> 可选参数,设置填充模式(PAD_NORMAL或PAD_PKCS5)在使用此实例完成的所有encrypt / decrpt操作期间使用。


建议使用PAD_PKCS5填充,因为不需要担心填充出现问题,填充可以在解密时明确地删除使用PAD_PKCS5 padmode加密的数据。



常用方法
--------------
encrypt(data, [pad], [padmode])
decrypt(data, [pad], [padmode])


data    -> 要加密/解密的字节
pad     -> 可选参数。 仅在使用padmode为PAD_NORMAL时, 加密时,将此字符添加到数据块的末尾。 对于解密,将删除尾随与最后8个垫填充字符匹配的字符未加密数据块的字节数。
padmode -> 可选参数,设置填充模式,必须是PAD_NORMAL之一或PAD_PKCS5。 默认为PAD_NORMAL


例子
-------

温馨提示:
1.如果您喜欢这篇帖子,请给作者点赞评分,点赞会增加帖子的热度,评分会给作者加学币。(评分不会扣掉您的积分,系统每天都会重置您的评分额度)。
2.回复帖子不仅是对作者的认可,还可以获得学币奖励,请尊重他人的劳动成果,拒绝做伸手党!
3.发广告、灌水回复等违规行为一经发现直接禁言,如果本帖内容涉嫌违规,请点击论坛底部的举报反馈按钮,也可以在【投诉建议】板块发帖举报。
已有 1 人评分荣耀 理由
xuenixiang + 3 感谢您的作品!

总评分: 荣耀 + 3   查看全部评分

发表于 2019-4-4 15:08:48
看雪2019CTF第十题,就是在C#程序里面使用了DES,也是CBC模式,当时一直在研究加解密函数

小黑屋|手机版|站务邮箱|学逆向论坛 ( 粤ICP备2021023307号 )|网站地图

GMT+8, 2024-11-25 01:12 , Processed in 0.142758 second(s), 43 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表