Шифрование и расшифровка данных с помощью ключа в 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 задает параметры расшифровки. Для задания свойств используйте следующие объекты параметров расшифровки.