我想生成具有自动登录功能的rdp文件,因此需要生成加密的密码并填写rdp文件。
对于加密工具,我使用的是jna开源的Crypt32Util(我也尝试过DPAPI DataProtector,结果是相同的)。但是结果不正确...
正如http://www.remkoweijnen.nl/blog/2007/10/18/how-rdp-passwords-are-encrypted/中指出的那样,该字符串应为unicode,这就是为什么我在getBytes中使用“ UTF-16LE”(我也曾尝试使用getBytes()和getBytes(“ UTF-8”),但没有人使用。 )
非常感谢您的帮助,为我提供了一些帮助,谢谢!
这是代码:
public String pwdEncrypt(String password){
byte[] pwdBytes = null;
try{
pwdBytes = password.getBytes("UTF-16LE");
}catch(Exception e){
e.printStackTrace();
}
byte[] encryptedPwd = Crypt32Util.cryptProtectData(pwdBytes);
return String.valueOf(Hex.encodeHex(encryptedPwd));
}
最佳答案
String paasword ="pwd";
DATA_BLOB pDataIn = new DATA_BLOB(password.getBytes(Charset.forName("UTF-16LE")));
DATA_BLOB pDataEncrypted = new DATA_BLOB();
System.out.println(Crypt32.INSTANCE.CryptProtectData(pDataIn, "psw",
null, null, null, WinCrypt.CRYPTPROTECT_UI_FORBIDDEN, pDataEncrypted));
StringBuffer epwsb = new StringBuffer();
byte[] pwdBytes= new byte [pDataEncrypted.cbData];
pwdBytes=pDataEncrypted.getData();
Formatter formatter = new Formatter(epwsb);
for ( final byte b : pwdBytes ) {
formatter.format("%02X", b);
}
System.out.println("password 51:b:"+ epwsb.toString());
关于java - 如何在Java中加密RDP密码,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11998797/