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

.NET中能否使用持久化的CNGKey对象计算HMAC?

.NET中HMAC与持久化密钥的使用差异

.NET及.NET Framework支持多种可借助持久化密钥的加密算法(例如AESCng),但目前所有公开的HMAC构造函数都要求传入原始字节数组形式的密钥值,无法像AES那样直接传入持久化密钥的名称来使用托管密钥。

如果需要结合持久化密钥使用HMAC,可行的处理方式是:

  • 先通过密钥管理机制(如CSP)获取持久化密钥对应的字节数组
  • 将该字节数组传入HMAC构造函数完成初始化

示例代码如下:

// 加载已持久化的AES密钥
using var aesKey = new AESCng("MyStoredKeyName");
// 提取密钥字节
byte[] keyBytes = aesKey.Key;
// 初始化HMACSHA256实例
using var hmac = new HMACSHA256(keyBytes);

需要注意的是,这种方式仍会将密钥字节加载到内存中,无法实现像AESCng那样完全由CSP托管密钥、避免明文密钥暴露的效果——这是由HMAC的算法设计决定的,它需要直接使用密钥字节参与哈希运算,因此天然依赖明文密钥的传入。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 22:35:54