我正在尝试以编程方式在计算机上创建 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: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,我用的是Windows XP
编辑:我找到了有关使用 C/C++ 加密的信息,我查看了 wincrypt.h,但我找不到任何有用的信息:http: //blogs.msdn.com/b/rds/archive/2007/01/22/vista -远程桌面连接-身份验证-faq.aspx