我有一个存储 ssh 密钥的应用程序。用户将他的私钥和公钥写入 2 个文本框,在存储它们之前,我的应用程序应该检查私钥是否与公钥匹配(使用 pycrypto)。验证 RSA 对很容易:
message = 'Encrypted message'
if 'ssh-rsa' in public_key:
public_key_container = RSA.importKey(public_key)
private_key_container = RSA.importKey(private_key)
encrypted_message = public_key_container.encrypt(message, 0)
decrypted_message = private_key_container.decrypt(encrypted_message)
if message == decrypted_message:
return True
我找到了似乎验证 DSA 密钥对的代码,但我找不到如何从用户公钥和私钥中提取 PQG 值:
elif 'ssh-dss' in public_key:
q = "?"
p = "?"
g = "?"
pub_k = ""
for b in bytearray(public_key, 'utf-8'):
pub_k += str(b)
priv_k = ""
for b in bytearray(private_key, 'utf-8'):
priv_k += str(b)
params = ( long(pub_k), long(g), long(p), long(q), long(priv_k))
key = DSA.construct(params)
if key.verify(message, key.sign(message,3)):
return True
请不要提示我使用 ssh-keygen 之类的功能从私钥中生成公钥。我知道这种方法,我想用 pycrypto 来做。