gpt4 book ai didi

windows-server-2012-r2 - DPAPI NG - NCryptProtectSecret 返回 NTE_ENCRYPTION_FAILURE

转载 作者:行者123 更新时间:2023-12-02 01:21:06 24 4
gpt4 key购买 nike

我正在尝试使用 DPAPI-NG 加密数据,但在执行 NCryptProtectSecret 时失败了,它返回:

0x80090034 (NTE_ENCRYPTION_FAILURE)

我创建了 NCryptCreateProtectionDescriptor 与本地用户 SID:

"SID=S-1-5-21-2942599413-360359348-3087651068-500"

然后我使用这个描述符实例作为 NCryptProtectSecret 的输入,但它不起作用。

如果我使用以下保护描述符:

"LOCAL=user"

一切似乎都很好,但它不适用于用户或组的 SID。我已经在 Windows Server 2012R2 和 Windows Server 2016 上对此进行了测试。

有什么想法吗?

这是一个代码示例:

SECURITY_STATUS Status;
PBYTE ProtectedData = NULL;
ULONG ProtectedDataLength = 0;
NCRYPT_DESCRIPTOR_HANDLE DescriptorHandle = NULL;
LPCWSTR ProtectionDescString = L"SID=S-1-5-21-2942599413-360359348-3087651068-500";

Status = NCryptCreateProtectionDescriptor(
ProtectionDescString,
0,
&DescriptorHandle
);
// Status is ERROR_SUCCESS (zero)


LPCWSTR SecretString = L"Some message to protect";
PBYTE Secret = (PBYTE)SecretString;
DWORD SecretLength = (ULONG)( (wcslen(SecretString)+1)*sizeof(WCHAR) );

Status = NCryptProtectSecret(
DescriptorHandle,
0,
PlainText,
PlainTextLength,
NULL, // Use default allocations by LocalAlloc/LocalFree
NULL, // Use default parent windows handle.
&ProtectedData, // out LocalFree
&ProtectedDataLength
);

**// Status == NTE_ENCRYPTION_FAILURE**

最佳答案

我遇到了这个问题,发现原因是我们的域在低于 2012 的功能级别上运行。将域升级到 2012 后,问题得到解决。

确定功能级别的快速简便方法是使用以下 PowerShell cmdlet

[system.directoryservices.activedirectory.Forest]::GetCurrentForest().ForestMode

关于windows-server-2012-r2 - DPAPI NG - NCryptProtectSecret 返回 NTE_ENCRYPTION_FAILURE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40192062/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com