自動ログイン機能を備えたrdpファイルを生成したいので、暗号化されたパスワードを生成してrdpファイルに入力する必要があります。
暗号化ツールには、jna オープン ソースの Crypt32Util を使用しています (DPAPI DataProtector も試しましたが、結果は同じです)。しかし、結果は正しくありません...
http://www.remkoweijnen.nl/blog/2007/10/18/how-rdp-passwords-are-encrypted/で指摘されているように、文字列はユニコードである必要があるため、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));
}