gpt4 book ai didi

java - 使用 JNA 解密使用 MS DPAPI 加密的数据

转载 作者:行者123 更新时间:2023-12-01 12:11:07 29 4
gpt4 key购买 nike

是否可以解密使用 MS DPAPI 加密的数据?例如,我想从 Windows 注册表中解密数字证书。

byte[] byteArray = (byte[]) Advapi32Util.registryGetValue(WinReg.HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\SystemCertificates\\AuthRoot\\Certificates\\02FAF3E291435468607857694DF5E45B68851868", "Blob");

byte[] decrypted = Crypt32Util.cryptUnprotectData(byteArray);

String stringDecrypted = new String(decrypted);
System.out.println(stringDecrypted);

但是我收到 Win32 异常:线程“main”中的异常 com.sun.jna.platform.win32.Win32Exception:数据无效。

我没有找到有关此异常的任何信息。那么这是什么意思?我可以像我想要的那样解密这些文件还是不可能?

感谢帮助!

最佳答案

根据MSDN documentation ,您缺少 cryptUnprotectData 的六个附加参数。

即使这些参数被标记为“可选”,您仍然需要在接口(interface)方法签名中声明它们。

更新

基于 MSDN 文档:

BOOL WINAPI CryptUnprotectData(
_In_ DATA_BLOB *pDataIn,
_Out_opt_ LPWSTR *ppszDataDescr,
_In_opt_ DATA_BLOB *pOptionalEntropy,
_Reserved_ PVOID pvReserved,
_In_opt_ CRYPTPROTECT_PROMPTSTRUCT *pPromptStruct,
_In_ DWORD dwFlags,
_Out_ DATA_BLOB *pDataOut
);

第二个、第三个、第四个和第五个参数可能为null。第六个参数可能为零。最后一个参数需要是适当分配的 DATA_BLOB函数可以存储其结果的位置(此结构在 JNA 的 platform.jar 中定义)。使用完 DATA_BLOBpbData 字段后,不要忘记将其值传递给 LocalFree

关于java - 使用 JNA 解密使用 MS DPAPI 加密的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27278054/

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