Maison > Article > développement back-end > Comment décrypter les clés privées PKCS8 cryptées en Go : résoudre l'erreur « Aucun en-tête DEK-Info dans le bloc »
Résolution de l'erreur « Aucun en-tête DEK-Info dans le bloc » pour la clé privée PKCS8 cryptée
Lors de la tentative de décodage d'une clé privée PKCS8 cryptée à l'aide Allez-y, vous pouvez rencontrer l'erreur "pas d'en-tête DEK-Info dans le bloc". Cela indique que la fonction de décodage de clé n'est pas capable de traiter les clés privées PKCS8 chiffrées.
La génération de la clé à l'aide des commandes OpenSSL fournies semble être correcte. Cependant, la bibliothèque standard de Go ne prend pas en charge nativement le déchiffrement des clés privées PKCS8 chiffrées.
Solution :
Pour résoudre ce problème, vous pouvez utiliser une bibliothèque externe spécialement conçue pour gérer Décryptage de la clé PKCS8. Un exemple d'une telle bibliothèque est la bibliothèque « pkcs8 », disponible sur GitHub.
Supposons que vous disposiez du code suivant pour déchiffrer la clé PKCS8 à l'aide de la bibliothèque « pkcs8 » :
<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>
Cette fonction prend comme arguments la clé PKCS8 chiffrée sous forme de tranche d'octets et le mot de passe de déchiffrement. Il tente ensuite de décoder le bloc PEM, qui contient les données de clé chiffrées.
Si le décodage réussit, la fonction appelle la fonction Decrypt de la bibliothèque "pkcs8" pour effectuer le décryptage proprement dit. La clé déchiffrée est ensuite renvoyée sous la forme d'une structure *pkcs8.PrivateKey.
En incorporant cette bibliothèque et en utilisant la fonction DecryptPKCS8 pour traiter les clés PKCS8 cryptées, vous pouvez résoudre l'erreur « pas d'en-tête DEK-Info dans le bloc ».
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!