使用 Azure 密钥保管库中的密钥加密和解密数据(JavaScript 方式)

使用相应的编程身份验证凭据创建 KeyClient,然后创建 CryptographyClient,以使用客户端在 Azure 密钥保管库中设置、更新和轮换密钥。

选择加密算法

为了充分利用 SDK 及其提供的枚举和类型,请选择加密算法,然后再继续完成下一部分。

  • RSA - Rivest-Shamir-Adleman
  • AES GCM - 高级加密标准 Galois 计数器模式
  • AES CBC - 高级加密标准密码块链接

使用 KnownEncryptionAlgorithms 枚举选择特定算法。

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

const myAlgorithm = KnownEncryptionAlgorithms.RSAOaep256

获取加密密钥

从密钥保管库创建获取KeyVaultKey 加密密钥,以用于加密和解密。

使用密钥加密和解密

加密需要用到以下参数对象之一:

这三个参数对象都需要用于加密的 algorithmplaintext。 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.cn`,
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 对象将设置用于解密的参数。 请使用以下解密参数对象来设置属性。

后续步骤