首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在欧洲央行模式下解密3 3DES (使用mode列表)?

如何在欧洲央行模式下解密3 3DES (使用mode列表)?
EN

Stack Overflow用户
提问于 2014-02-26 14:45:56
回答 1查看 6.4K关注 0票数 2

我有一些加密的文本(在欧洲央行模式下用3 3DES加密,没有盐)。

我的问题:我如何使用单词列表解密它们?(或者没有?)

示例:

加密文本:

代码语言:javascript
复制
Xfi+h4Ir6l7zXCP+N4EPvQ==

用于此的单词列表:

代码语言:javascript
复制
foo
bar
marketing

加密之前的原始文本是:“营销”(只是为了使示例完整)。

我尝试使用注释的python脚本:

代码语言:javascript
复制
$ cat 3des.py 
 #!/usr/local/bin/python

from pyDes import *

data = "marketing"
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) == data

测试它:

代码语言:javascript
复制
$ python 3des.py 
Encrypted: '\xabd\xfc\x98x\x86\x8d\xb5A\xba\x8e\x12,\x1f\x83\xb5'
Decrypted: 'marketing'
$ 

帮帮忙好吗?

EN

回答 1

Stack Overflow用户

发布于 2014-02-27 15:50:09

如果要使用pyDES,首先必须将脚本配置为使用3 3DES.下面是提供的pyDES示例,修改为使用3 3DES:

代码语言:javascript
复制
from pyDes import *

data = "marketing"
k = triple_des("DESCRYPTDESCRYPT", ECB, "\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) == data

打破它..。

下一行包含类初始化信息:

代码语言:javascript
复制
k = triple_des("DESCRYPTDESCRYPT", ECB, "\0\0\0\0\0\0\0\0", pad=None, padmode=PAD_PKCS5)

从文件中可以看出:

代码语言:javascript
复制
(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.

所以,在我修改的例子中,我配置了这样的params .

代码语言:javascript
复制
Key: DESCRYPTDESCRYPT
Mode: ECB
IV: "\0\0\0\0\0\0\0\0"
pad: None
padmode: PAD_PKCS5

因此,从这里开始,您需要将上面的“data”变量更改为您想要解密的密文,然后将您的字列表加载到一个数组中,设置一个循环来通过'key‘param迭代数组中的值.

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22070990

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档