有什么方法可以验证给定的字符串是合法的 ssh rsa 私钥吗?
我只需要验证实际的密钥 - 我不关心密钥类型或相应私钥的比较。
目标是确保输入文件是否是有效的 ssh 私钥。
如果有任何可用的Python模块或代码片段那就太好了。
谢谢。
我想验证通过REST API传输的ssh密钥,我想确定密钥是否有效。
您可以通过检查 SSH RSA 私钥的格式并确保可以使用 Python 中的
cryptography
库成功加载它来验证它。该库提供了使用加密密钥的工具,可用于验证 SSH 密钥的有效性。
首先,您需要安装
cryptography
库(如果您尚未安装)。您可以使用 pip 安装它:
pip install cryptography
这是一个 Python 代码片段,演示如何验证 SSH RSA 私钥:
from cryptography.hazmat.primitives import serialization
from cryptography.hazmat.backends import default_backend
from cryptography.exceptions import InvalidSignature
def is_valid_ssh_rsa_private_key(key_string):
try:
# Attempt to load the private key
private_key = serialization.load_ssh_private_key(
key_string.encode(),
password=None,
backend=default_backend()
)
# Check if the key is an instance of RSAPrivateKey
if private_key.key_size is not None: # This indicates it's a valid RSA key
return True
except (ValueError, TypeError): # Catch exceptions related to invalid key formats
pass
return False
# Example usage
if __name__ == "__main__":
ssh_key = """-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEA7...
-----END RSA PRIVATE KEY-----"""
if is_valid_ssh_rsa_private_key(ssh_key):
print("The SSH RSA private key is valid.")
else:
print("The SSH RSA private key is invalid.")
说明:
is_valid_ssh_rsa_private_key
接受字符串输入
代表 SSH RSA 私钥。serialization.load_ssh_private_key
加载密钥。private_key.key_size
),它返回 True。确保将占位符 ssh_key 变量替换为您要验证的实际 SSH 私钥字符串。