Поделиться через


Шифрование и расшифровка данных с помощью ключа в Azure Key Vault с помощью JavaScript

Создайте KeyClient с соответствующими учетными данными программной проверки подлинности, а затем создайте CryptographyClient, чтобы задать, обновить и повернуть ключ в Azure Key Vault.

Выбор алгоритма шифрования

Чтобы лучше использовать пакет SDK и его предоставленные перечисления и типы, выберите алгоритм шифрования, прежде чем перейти к следующему разделу.

  • RSA - Rivest-Shamir-Adleman
  • AES GCM — режим счетчика "Расширенный стандарт шифрования Galois"
  • AES CBC — расширенная цепочка блоков шифров уровня "Стандартный" шифрования

Используйте перечисление KnownEncryptionAlgorithms для выбора определенного алгоритма.

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

const myAlgorithm = KnownEncryptionAlgorithms.RSAOaep256

Получение ключа шифрования

Создайте или получите ключ шифрования KeyVaultKey из Key Vault для использования с шифрованием и расшифровкой.

Шифрование и расшифровка с помощью ключа

Для шифрования требуется один из следующих объектов параметров:

Для шифрования требуются algorithm plaintext все три объекта параметров. Ниже показан пример параметров шифрования RSA.

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());
}

Объект encryptParams задает параметры шифрования. Используйте следующие объекты параметров шифрования для задания свойств.

Объект decryptParams задает параметры расшифровки. Для задания свойств используйте следующие объекты параметров расшифровки.

Следующие шаги