Mengenkripsi dan mendekripsi data menggunakan kunci di Azure Key Vault dengan JavaScript

Buat KeyClient dengan kredensial autentikasi terprogram yang sesuai, lalu buat CryptographyClient menggunakan klien untuk mengatur, memperbarui, dan memutar kunci di Azure Key Vault.

Pilih algoritma enkripsi

Untuk memanfaatkan SDK dengan sebaik-baiknya serta enum dan jenis yang disediakan, pilih algoritma enkripsi Anda sebelum melanjutkan ke bagian berikutnya.

  • RSA - Rivest–Shamir–Adleman
  • AES GCM - Mode Penghitung Galois Standar Enkripsi Lanjutan
  • AES CBC - Rantai Blok Sandi Standar Enkripsi Tingkat Lanjut

Gunakan enum KnownEncryptionAlgorithms untuk memilih algoritma tertentu.

import {
  KnownEncryptionAlgorithms
} from '@azure/keyvault-keys';

const myAlgorithm = KnownEncryptionAlgorithms.RSAOaep256

Dapatkan kunci enkripsi

Buat atau dapatkan kunci enkripsi KeyVaultKey Anda dari Key Vault untuk digunakan dengan enkripsi dan dekripsi.

Mengenkripsi dan mendekripsi dengan kunci

Enkripsi memerlukan salah satu objek parameter berikut:

Ketiga objek parameter memerlukan algorithm dan yang plaintext digunakan untuk mengenkripsi. Contoh parameter enkripsi RSA ditunjukkan di bawah ini.

import { DefaultAzureCredential } from '@azure/identity';
import {
  CryptographyClient,
  KeyClient,
  KnownEncryptionAlgorithms
} from '@azure/keyvault-keys';

// get service client using AZURE_KEYVAULT_NAME environment variable
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
    const encryptClient = new CryptographyClient(keyVaultKey, credential);
    
    // set data to encrypt
    const originalInfo = 'Hello World';
    
    // set encryption algorithm
    const algorithm = KnownEncryptionAlgorithms.RSAOaep256;
    
    // encrypt settings: RsaEncryptParameters | AesGcmEncryptParameters | AesCbcEncryptParameters
    const encryptParams = {
        algorithm,
        plaintext: Buffer.from(originalInfo)
    };
    
    // encrypt
    const encryptResult = await encryptClient.encrypt(encryptParams);
    
    // ... hand off encrypted result to another process
    // ... other process needs to decrypt data

    // decrypt settings: DecryptParameters
    const decryptParams = {
        algorithm,
        ciphertext: encryptResult.result
    };
    
    // decrypt
    const decryptResult = await encryptClient.decrypt(decryptParams);
    console.log(decryptResult.result.toString());
}

Objek encryptParams mengatur parameter untuk enkripsi. Gunakan objek parameter enkripsi berikut untuk mengatur properti.

Objek decryptParams mengatur parameter untuk dekripsi. Gunakan objek parameter dekripsi berikut untuk mengatur properti.

Langkah berikutnya