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