プログラムでコンピューター上にRDPファイルを作成しようとしています。PROPERTIESファイルからユーザー名とパスワードを取得し、それを使用CryptProtectData()
してvlaid形式に暗号化しようとしています。次に、文字列password 51:b:<encrypted password>
を生成して.RDPファイルに保存します。
RDPファイルを見ると、次のような出力が得られます。
password 51:b:[B@3fd83fd8
ここを見ると:http://www.remkoweijnen.nl/blog/2007/10/18/how-rdp-passwords-are-encrypted/ パスワードが正しい形式ではないことがわかります。
ちなみに、暗号化を行うために、私はインポートを使用しています:このコードからわかるようimport com.sun.jna.platform.win32.Crypt32Util;
にアクセスするには:Crypt32Util.cryptProtectData(passwordBytes)
FileWriter fstream = new FileWriter(rdpFile);
BufferedWriter out = new BufferedWriter(fstream);
out.write("full address:s:"+remoteServerIP);
out.write("\nusername:s:"+username);
byte[] passwordBytes = password.getBytes();
out.write("\npassword 51:b:"+Crypt32Util.cryptProtectData(passwordBytes));
パスワードを正しく暗号化するのを手伝ってくれる人に感謝します。
ありがとうございました。
PS、私はWindowsXPを使用しています
編集:C / C ++を使用した暗号化に関するこの情報を見つけ、wincrypt.hを調べましたが、有用なものを特定できませんでした:http: //blogs.msdn.com/b/rds/archive/2007/01/22/vista -remote-desktop-connection-authentication-faq.aspx