Freigeben über


Signieren und Überprüfen von Daten mithilfe eines Schlüssels in Azure Key Vault mit JavaScript

Erstellen Sie den KeyClient mit den entsprechenden Anmeldeinformationen für die programmgesteuerte Authentifizierung, und erstellen Sie dann einen CryptographyClient und verwenden Sie ihn, um einen Schlüssel in Azure Key Vault festzulegen, zu aktivieren und zu rotieren.

Signieren von Daten

Einige Vorschläge zum Signieren von Daten:

  • Hashen großer Daten vor dem Signieren
  • Hashen unidirektionaler Daten vor der Signatur, z. B. Kennwörter
  • Kleine wechselseitige Daten können direkt signiert werden

Signieren und Überprüfen großer oder unidirektionaler Daten mit einem Schlüssel

Verwenden Sie die folgenden Methoden, um Ihre verarbeitete Nachricht zu signieren und zu überprüfen:

Für verarbeitete Nachrichten:

  • Signieren, um den Digest einer Nachricht zu signieren. Dies ist nützlich für große Daten oder unidirektionale Daten wie Kennwörter.
  • Verifizieren, um den Digest einer Nachricht zu überprüfen.
import { createHash } from "crypto";
import { DefaultAzureCredential } from '@azure/identity';
import {
  CryptographyClient,
  KeyClient,
  KnownSignatureAlgorithms
} from '@azure/keyvault-keys';

// get service client
const credential = new DefaultAzureCredential();
const serviceClient = new KeyClient(
    `https://${process.env.AZURE_KEYVAULT_NAME}.vault.azure.net`,
    credential
);

// get existing key
const keyVaultKey = await serviceClient.getKey('MyRsaKey');

if (keyVaultKey?.name) {

    // get encryption client with key
    const cryptoClient = new CryptographyClient(keyVaultKey, credential);
    
    // get digest
    const digestableData = "MyLargeOrOneWayData";
    const digest = createHash('sha256')
      .update(digestableData)
      .update(process.env.SYSTEM_SALT || '')
      .digest();
    
    // sign digest
    const { result: signature } = await cryptoClient.sign(KnownSignatureAlgorithms.RS256, digest);
   
    // store signed digest in database

    // verify signature
    const { result: verified } = await cryptoClient.verify(KnownSignatureAlgorithms.RS256, digest, signature);
    console.log(`Verification ${verified ? 'succeeded' : 'failed'}.`);
}

Signieren und Überprüfen kleiner Daten mit Schlüssel

Verwenden Sie die folgenden Methoden, um Ihre Daten zu signieren und zu überprüfen:

Für Daten:

import { createHash } from "crypto";
import { DefaultAzureCredential } from '@azure/identity';
import {
  CryptographyClient,
  KeyClient,
  KnownSignatureAlgorithms
} from '@azure/keyvault-keys';

// get service client
const credential = new DefaultAzureCredential();
const serviceClient = new KeyClient(
    `https://${process.env.AZURE_KEYVAULT_NAME}.vault.azure.net`,
    credential
);

// get existing key
const keyVaultKey = await serviceClient.getKey('MyRsaKey');

if (keyVaultKey?.name) {

    // get encryption client with key
    const cryptoClient = new CryptographyClient(keyVaultKey, credential);
    
    const data = 'Hello you bright big beautiful world!';
    
    // sign
    const { result: signature } = await cryptoClient.signData(
        KnownSignatureAlgorithms.RS256,
        Buffer.from(data, 'utf8')
    );
    
    // verify signature
    const { result: verified } = await cryptoClient.verifyData(
        KnownSignatureAlgorithms.RS256,
        Buffer.from(data, 'utf8'),
        signature
    );
    console.log(`Verification ${verified ? 'succeeded' : 'failed'}.`);
}

Nächste Schritte