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