Behebung des Fehlers „Kein DEK-Info-Header im Block“ für verschlüsselten privaten PKCS8-Schlüssel
Beim Versuch, einen verschlüsselten privaten PKCS8-Schlüssel mit zu dekodieren Gehen Sie, möglicherweise tritt die Fehlermeldung „Kein DEK-Info-Header im Block“ auf. Dies weist darauf hin, dass die Schlüsseldekodierungsfunktion verschlüsselte private PKCS8-Schlüssel nicht verarbeiten kann.
Die Generierung des Schlüssels mithilfe der bereitgestellten OpenSSL-Befehle scheint korrekt zu sein. Die Standardbibliothek von Go unterstützt jedoch nicht nativ die Entschlüsselung verschlüsselter privater PKCS8-Schlüssel.
Lösung:
Um dieses Problem zu beheben, können Sie eine externe Bibliothek verwenden, die speziell für die Handhabung entwickelt wurde PKCS8-Schlüsselentschlüsselung. Ein Beispiel für eine solche Bibliothek ist die „pkcs8“-Bibliothek, die auf GitHub verfügbar ist.
Angenommen, Sie haben den folgenden Code zum Entschlüsseln des PKCS8-Schlüssels mithilfe der „pkcs8“-Bibliothek:
<code class="go">import "github.com/youmark/pkcs8" func DecryptPKCS8(key []byte, password string) (*pkcs8.PrivateKey, error) { block, _ := pem.Decode(key) return pkcs8.Decrypt(block.Bytes, []byte(password)) }</code>
Diese Funktion verwendet den verschlüsselten PKCS8-Schlüssel in Form eines Byte-Slices und das Entschlüsselungskennwort als Argumente. Anschließend wird versucht, den PEM-Block zu dekodieren, der die verschlüsselten Schlüsseldaten enthält.
Wenn die Dekodierung erfolgreich ist, ruft die Funktion die Decrypt-Funktion aus der „pkcs8“-Bibliothek auf, um die eigentliche Entschlüsselung durchzuführen. Der entschlüsselte Schlüssel wird dann als *pkcs8.PrivateKey-Struktur zurückgegeben.
Durch die Einbindung dieser Bibliothek und die Verwendung der DecryptPKCS8-Funktion zur Verarbeitung verschlüsselter PKCS8-Schlüssel können Sie den Fehler „Kein DEK-Info-Header im Block“ beheben.
Das obige ist der detaillierte Inhalt vonSo entschlüsseln Sie verschlüsselte private PKCS8-Schlüssel in Go: Beheben des Fehlers „Kein DEK-Info-Header im Block'.. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!