Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 验证RSA私钥的密码短语_Python_Rsa_Brute Force_Passphrase - Fatal编程技术网

Python 验证RSA私钥的密码短语

Python 验证RSA私钥的密码短语,python,rsa,brute-force,passphrase,Python,Rsa,Brute Force,Passphrase,如何在python中验证RSA私钥(PEM格式)的密码短语? 我想使用暴力,使用我自己的字典 我在MacOS中通过以下命令创建了密钥: ssh-keygen -t rsa -C "your_email@example.com" RSA私钥详细信息: 强度:2048位 算法:RSA 尺寸:2048 指纹 SHA1:80 09 90 30 96 8E 24 FC A9 4B 46 E1 BE B7 23 2D EC 16 2C EB SHA256:67 93 E2 0A 9F E7 C9 7E

如何在python中验证RSA私钥(PEM格式)的密码短语? 我想使用暴力,使用我自己的字典

我在MacOS中通过以下命令创建了密钥:

ssh-keygen -t rsa -C "your_email@example.com" 
RSA私钥详细信息:

强度:2048位

算法:RSA

尺寸:2048

指纹

SHA1:80 09 90 30 96 8E 24 FC A9 4B 46 E1 BE B7 23 2D EC 16 2C EB

SHA256:67 93 E2 0A 9F E7 C9 7E A9 66 AD 05 52 FD 19 8B 3E CB 8A 59 9F 51 F0 A6 65 6F 9A 9D 7B 35 B9

密码短语是:“测试”

正如@Hannu建议的那样,我运行了这段代码,但它拒绝了正确和错误的密码短语

from Crypto.PublicKey import RSA
kf = open("testing", "r")
kt = kf.read()
kf.close()
dlist = ["foo", "bar", "testing"]
for d in dlist:
    try:
        nk = RSA.importKey(kt, passphrase=d)
        print "success", d
        break
    except ValueError:
        print "nosuccess", d
        pass

我建议看一下加密中的RSA模块

以下几点是一个很好的起点

>>> from Crypto.PrivateKey import RSA
>>>
>>> key = RSA.generate(2048)
>>> f = open('mykey.pem','w')
>>> f.write(RSA.exportKey('PEM'))
>>> f.close()
...
>>> f = open('mykey.pem','r')
>>> key = RSA.importKey(f.read())

设法用Paramiko而不是pycrypto解决此问题:

import paramiko
from paramiko import rsakey

kf = open("sshk", "r")

dlist = ["foo", "bar", "foobar", "klunssi", "xyzzy"]

for d in dlist:
    kf.seek(0)
    try:
        nk = rsakey.RSAKey.from_private_key(kf, password=d)
        print "success", d
    except paramiko.ssh_exception.SSHException:
        print "fail", d
这至少对我有用。希望这有帮助


Hannu

创建您的私钥使用了哪种加密算法?您可以在pem文件中看到它。@Hannu您是在寻找这些数据==>算法:RSA和大小:2048还是其他什么?您可以发布私钥文件的第一行吗?我尝试用ssh-keygen生成一个pem密钥,然后用pyCrypto打开它,但是失败了,因为密钥是AES加密的,而不是DES,pyCrypto似乎因为某种原因失败了。。。。或者用关键信息修改你原来的帖子。@Hannu我做到了。这就是你要找的东西吗?我运行了代码,它不接受正确的密码!它拒绝所有传递的短语(正确的和错误的)Ok,那么这对ssh-keygen生成的密钥不起作用。让我想想。谢谢,创建随机字符串很容易,我只想找到一个方法(在Python中,甚至在mac或linux命令行中,在Java或C或C++中)将其作为密码输入密钥(以自动方式)。我刚刚检查了我的pycrypto代码。它不接受AES-128-CBC作为密钥加密方法。只有DES。奇怪的是,我通过谷歌搜索找到了一个接受它的版本,但它似乎很旧,并且没有纳入当前的加密软件包中。可能需要从pycrypto查找其他地方。更新了我的答案。帕拉米科似乎能够处理这些文件。