You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Azure Key Vault检索的RSA公钥完成本地加密

问题

我计划按照以下流程使用已在Azure Key Vault中生成的RSA密钥:

  • 检索RSA公钥
  • 使用该公钥在本地对文本数据执行加密操作
  • 在另一应用中调用Azure Key Vault完成密文解密

目前已完成的代码实现如下:

string clientId = "XYZ";
string tenantId = "ABC";
string clientSecret = "123";

string keyVaultName = "kvn";
string keyVaultKeyName = "kvkn";
string textToEncrypt = "StuffIDoNotWantYouToKnow";

ClientSecretCredential clientSecretCredential = new ClientSecretCredential(
    tenantId, // 租户ID
    clientId, // AD应用程序appId
    clientSecret // AD应用程序客户端密钥
);


// 获取密钥
KeyClient keyClient = new KeyClient(new Uri($"https://{keyVaultName}.vault.azure.net/"), clientSecretCredential);
var key = keyClient.GetKey(keyVaultKeyName);

当前遇到的问题:不清楚如何使用已检索到的密钥完成文本数据的本地加密操作。

补充说明:当前使用的开发框架为.NET Framework 4.6.1


解答

Azure Key Vault的Key SDK自带公钥转换方法,不需要手动解析密钥参数,直接调用内置方法转成.NET原生RSA实例即可完成本地加密,具体实现如下:

  1. 先确保项目安装了兼容.NET Framework 4.6.1的Azure.Security.KeyVault.Keys包,4.0.x~4.4.x版本均可兼容,不要选4.5以上放弃.NET Framework支持的版本。
  2. 注意KeyClient.GetKey方法返回的是Response<KeyVaultKey>类型,需要取.Value属性才是实际的密钥对象。
  3. 加密填充算法必须和后续Key Vault解密支持的算法对齐,优先选RSA-OAEP-256,这是Key Vault全版本支持的填充模式,安全性也优于PKCS#1 v1.5。

直接在你现有代码后面追加以下逻辑即可完成本地加密:

// 获取KeyVaultKey实例
KeyVaultKey vaultKey = key.Value;

// 转换为本地RSA实例,该实例仅包含公钥,无法用于本地解密
using (RSA rsa = vaultKey.ToRSA())
{
    // 待加密文本转UTF8字节数组
    byte[] plainData = Encoding.UTF8.GetBytes(textToEncrypt);
    
    // 执行本地加密,填充模式指定为OAEP SHA256
    byte[] encryptedData = rsa.Encrypt(plainData, RSAEncryptionPadding.OaepSHA256);
    
    // 密文转Base64字符串,方便后续传输、存储
    string encryptedBase64 = Convert.ToBase64String(encryptedData);
}

几个关键注意点:

  • 本地拿到的RSA实例仅包含公钥成分,私钥始终存储在Key Vault服务端,不会导出到本地,符合你设计的安全流程
  • 后续调用Key Vault解密接口时,必须指定加密算法为EncryptionAlgorithm.RsaOaep256,和本地加密填充模式完全一致,否则会触发解密失败
  • RSA加密有长度限制:2048位密钥搭配OAEP256填充时,单次最多加密190字节明文;4096位密钥最多加密446字节明文。如果要加密更长的文本,不要拆分明文分段加密,采用混合加密方案:本地生成随机AES密钥用AES加密长文本,再用RSA公钥加密这个AES密钥,最终传输加密后的AES密钥+AES密文即可,解密时先调用Key Vault解开AES密钥,再本地用AES解明文。

内容的提问来源于stack exchange,提问作者Daniel Fridman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.01 04:51:23