如何从变量中为 python 中的 openssl 解密提供密钥

How to provide key for openssl decrypt in python from a variable

我正在研究一种简单的加密暴力破解方法。蛮力攻击是微不足道的,但我正在努力使用 python 将所需的值输入到 openssl 中。为了避免将答案交给其他做实验或寻找不良目的的人,我只打算 post 我的与提供密钥相关的代码,但正是代码给我带来了问题。

这是我目前所拥有的。

os.system("openssl des-cbc -in testfile.txt -out testfile.enc -K 0x1122334455667788 -iv 0x1111111111111111") 
for x in range (0,100):
    ...
    argument = "openssl des-cbc -d -in testfile.enc -out testfile.txt -K {0} -iv 0x1111111111111111".format(hex(key))
    print argument
    os.system(argument)
    #add code here to check if the decrypt was successfull

    #increment values for next decryption
    key = key + 0x0000000000000001
    x = x + 1  
    ...

我尝试过使用和不使用 0x 作为十六进制值,也尝试过使用和不使用密钥上的十六进制包装器。顺便说一句,我使用的是 python 2.7,所以 .format 应该没问题,当我使用 print 语句时,它似乎是将值放入字符串中。

这是我收到的错误消息。

非十六进制数字 无效的十六进制 iv 值

这是我从打印语句中得到的。这让我想知道它是否可能在值的存储中被截断,这可能是我的问题。

openssl des-cbc -d -in testfile.enc -out testfile.txt -K 0x63 -iv 0x1111111111111111

有人知道我做错了什么吗?

谢谢

吉米

原来有两个问题。第一个是截断的零,可以通过使用格式告诉它有多少个零并使用十六进制来轻松修复。因此,它变成了 {0} 而不是 {0},然后我试图通过自己添加 0x 来解决该问题的事实是 Artjom

指出的第二个问题