简体   繁体   English

使用Java加密RDP密码

[英]Encrypt RDP password with Java

I've already tried the another solutions from SO, such as: 我已经尝试过SO的其他解决方案,例如:

String password ="pwd";
        WinCrypt.DATA_BLOB pDataIn = new WinCrypt.DATA_BLOB(password.getBytes(Charset.forName("UTF-16LE")));
        WinCrypt.DATA_BLOB pDataEncrypted = new WinCrypt.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());

or 要么

Crypt32Util.cryptProtectData("12345".getBytes("UTF-16LE"), null, 0, "psw", null);

But all of them give different results for every time I run them, and they do not match the real password, that was saved by MSTSC or generated by RDP Password Hasher utility. 但是,每次我运行它们时,它们都会给出不同的结果,并且它们与由MSTSC保存或由RDP Password Hasher实用程序生成的真实密码不匹配。 Does anyone know the solution, or CLI-utility that can encrypt password? 有谁知道可以加密密码的解决方案或CLI实用程序?

Here's my working solution (you need JNA platform, to get this working): 这是我的工作解决方案(您需要JNA平台才能正常工作):

    private static String ToHexString(byte[] bytes) {   
        StringBuilder sb = new StringBuilder();   
        Formatter formatter = new Formatter(sb);   
        for (byte b : bytes) {
            formatter.format("%02x", b);   
        }
        formatter.close();
        return sb.toString();   
    }  

    private String cryptRdpPassword(String pass) {
        try {
            return ToHexString(Crypt32Util.cryptProtectData(pass.getBytes("UTF-16LE"), null, 0, "psw", null));
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
            return "ERROR";
        }
    }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM