Maison  >  Article  >  développement back-end  >  Comment importer une clé privée RSA depuis un fichier dans Go ?

Comment importer une clé privée RSA depuis un fichier dans Go ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-08 22:58:02200parcourir

How to import an RSA private key from a file in Go?

Comment importer une clé privée RSA à partir d'un fichier ?

Lorsque vous avez besoin de lire une clé RSA à partir d'un fichier pour obtenir une signature pour un JSON jeton Web (JWT), des mesures spécifiques peuvent être prises pour y parvenir. Bien qu'il existe plusieurs exemples facilement disponibles illustrant la procédure de stockage d'une clé RSA nouvellement générée sur un lecteur, les instructions sur la façon de créer une structure de clé s'appuyant sur une clé pré-générée à partir d'un fichier peuvent être limitées.

Pour Pour résoudre ce problème, nous présentons une solution complète qui combine les fonctionnalités des fonctions pem.Decode et x509.ParsePKCS1PrivateKey. Cette approche peut importer efficacement une clé privée RSA à partir d'un fichier.

Voici une explication détaillée du processus :

  1. Décoder la clé codée en PEM :

    • Commencez par obtenir la clé codée PEM à partir de votre fichier et décodez-la à l'aide de la fonction pem.Decode. Cette fonction aide à extraire les octets bruts associés à la clé, dont vous aurez besoin pour un traitement ultérieur.
  2. Analyser la clé privée PKCS#1 :

    • Pour les clés privées codées au format PKCS#1, vous utiliserez la fonction x509.ParsePKCS1PrivateKey. Il vous permet de créer un objet clé privée RSA à partir des octets fournis.
  3. Imprimer les paramètres de clé privée :

    • Une fois la clé privée RSA analysée avec succès, vous pouvez accéder à ses paramètres, tels que le module (N), l'exposant, etc. Ces paramètres sont cruciaux pour les opérations cryptographiques ultérieures.

Exemple de code :

Voici un exemple qui met en pratique les instructions susmentionnées :

package main

import (
    "crypto/x509"
    "encoding/pem"
    "fmt"
)

func main() {
    // Define the PEM-encoded key as a string.
    pemString := `-----BEGIN PRIVATE KEY-----
    [PEM-encoded key content]
    -----END PRIVATE KEY-----`

    // Decode the PEM-encoded key.
    block, _ := pem.Decode([]byte(pemString))

    // Parse the PKCS#1 private key.
    key, _ := x509.ParsePKCS1PrivateKey(block.Bytes)

    // Print the modulus of the private key.
    fmt.Println(key.N)
}

Alternative pour les clés codées PKCS#8 :

Si la clé avec laquelle vous travaillez est codée au format PKCS#8, une approche différente est nécessaire. Vous utiliseriez plutôt la fonction x509.ParsePKCS8PrivateKey. Voici un exemple :

func main() {
    // Define the PEM-encoded key as a string.
    pemString := `-----BEGIN PRIVATE KEY-----
    [PEM-encoded key content]
    -----END PRIVATE KEY-----`

    // Decode the PEM-encoded key.
    block, _ := pem.Decode([]byte(pemString))

    // Parse the PKCS#8 private key.
    parseResult, _ := x509.ParsePKCS8PrivateKey(block.Bytes)

    // Cast the parse result to an RSA private key.
    key := parseResult.(*rsa.PrivateKey)

    // Print the modulus of the private key.
    fmt.Println(key.N)
}

En suivant ces étapes, vous pouvez importer efficacement une clé privée RSA à partir d'un fichier, qu'elle soit encodée au format PKCS#1 ou PKCS#8.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn