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

Win32 API中CredentialBlob明文存储的加密方式咨询

Win32 CredWriteW 凭据存储后CredentialBlob明文问题解答

你通过以下代码使用Win32 API保存新凭据:

CREDENTIALW cred = { 0 };
...
cred.Type = CRED_TYPE_GENERIC;
cred.TargetName = convert("PIN");
cred.CredentialBlob = (LPBYTE)pBlob; // value here: "password"
..
BOOL ok = ::CredWriteW(&cred, 0);
...

再通过以下代码读取该凭据:

PCREDENTIALW pcred;
BOOL ok = ::CredReadW(L"PIN", CRED_TYPE_GENERIC, 0, &pcred);

发现CredentialBlob中的密码以明文形式显示,疑问是否需要单独对CredentialBlob进行加解密,还是可以通过Win32 API直接加密该值。


解答

CredWriteW本身会自动对CredentialBlob进行加密存储,你读取时看到明文是API的正常行为:

  • 调用CredWriteW时,系统会基于当前登录用户的安全上下文对CredentialBlob加密,最终存储在磁盘上的内容是加密状态,并非明文。
  • 调用CredReadW时,系统会自动完成解密操作,所以你获取到的pcred->CredentialBlob是明文形式——这是API封装好的逻辑,帮你省去了手动加解密的步骤。
  • 若直接查看凭据存储的底层文件(如%USERPROFILE%\AppData\Local\Microsoft\Credentials下的文件),会看到内容是加密的,只有当前登录用户(或拥有系统级权限的进程)才能解密读取。

除非你的业务场景有特殊的加密需求(比如自定义密钥、跨用户共享等),否则完全不需要手动对CredentialBlob进行加解密,依赖Win32凭据API的自动加密机制即可满足安全需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 02:42:40