Zum Inhalt springen
ecdsa.com
Python cryptographyPython cryptography

Fehlermeldung

Incorrect password, could not decrypt key

Auch ausgegeben als

  • ValueError: Incorrect password, could not decrypt key
  • Bad decrypt. Incorrect password?

Wortlaut je Release (in jedem geprüft): ab 45.0 „Incorrect password, could not decrypt key“; 43–44 melden ein falsches Passwort als „Could not deserialize key data… the provided password may be incorrect…“; 42 und älter „Bad decrypt. Incorrect password?“.

Python cryptography — ValueError from load_pem_private_key / load_der_private_key / pkcs12.load_key_and_certificates

Was der Fehler bedeutet

Der Schlüssel ist verschlüsselt, und cryptography hat versucht, ihn mit dem von dir angegebenen Passwort zu entschlüsseln, doch die Entschlüsselung ist fehlgeschlagen. Verschlüsselte private Schlüssel enthalten keinen „Passwort-Hinweis“ – das einzige Signal ist, dass die entschlüsselten Bytes kein gültiger Schlüssel sind. Die Meldung bedeutet daher immer, dass die übergebenen Bytes nicht die Passphrase sind, die bei der Verschlüsselung verwendet wurde.

Warum der Fehler auftritt

So behebst du den Fehler

  1. 1.

    Passphrase bytegenau einlesen

    Entferne nur Zeilenenden, nie anderen Whitespace, und behalte die Passphrase von der Quelle bis zum Loader als Bytes.

    python
    from pathlib import Path
    
    passphrase = Path("/run/secrets/key_passphrase").read_bytes().rstrip(b"\r\n")
    key = serialization.load_pem_private_key(pem, password=passphrase)
  2. 2.

    Passphrase außerhalb deines Codes bestätigen

    Akzeptiert OpenSSL die von Hand eingetippte Passphrase, während dein Code scheitert, liegt der Unterschied darin, wie der Code sie einliest (Zeilenumbruch, Kodierung). Scheitert auch OpenSSL, ist die Passphrase schlicht falsch.

    bash
    # Prompts for the passphrase; "bad decrypt" means the passphrase is wrong, not the file
    openssl pkey -in encrypted.pem -noout && echo "passphrase OK"
    printf '%s' "$KEY_PASSPHRASE" | wc -c    # length without a trailing newline

Verwandte Fehler

Gesamte Signaturfehler-Datenbank durchsuchen