0
是否可以解密用MS DPAPI加密的数据?例如,我想从Windows注册表中解密数字证书。解密使用MS DPAPI和JNA加密的数据
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异常:异常在线程“主要” com.sun.jna.platform.win32.Win32Exception:数据是无效的。
我没有找到关于此例外的任何信息。那么这意味着什么?我可以解密这些文件,就像我想要的一样,还是不可能?
Thnaks求助!
什么是我需要添加的确切参数。我认为参数必须是使用DPAPI加密数据的参数。但我没有发现他们使用什么确切参数的信息。所以有点难以找出我需要的参数 – Opa114 2014-12-04 12:52:00
probelem是JNA函数cryptUnprotectData()只接受这些参数: byte [] data OR byte [] data,byte [] entropy,int flags, WinCrypt.CRYPTPROTECT_PROMPTSTRUCT提示或 字节[]数据,INT标志 在这里看到(https://jna.java.net/javadoc/platform/com/sun/jna/platform/win32/Crypt32Util.html) ,所以我不知道我必须在那里设置哪些值:( – Opa114 2014-12-04 18:11:50
根据[github上的最新版本,'cryptUnprotectData()'](https://github.com/twall/jna/blob/master/contrib/platform/src /com/sun/jna/platform/win32/Crypt32.java#L72-L112)与MSDN上的文档相匹配。'jna.java.net'多年来一直没有使用过。 – technomage 2014-12-04 19:52:10