有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java运行用于在NodeJS上运行的Javascript代码

我有一个在NodeJs上运行的代码。我们想改变技术(到java)。 问题是我们有一些现有密码,我不知道如何将加密逻辑复制到java。 因此,一种可能的解决方案是在javascript中运行加密逻辑(例如,命令行、java中的embbed等),然后返回结果

问题是——我该怎么做

nodejs代码如下所示:

crypto = require('crypto');
this.salt = this.makeSalt();

encryptPassword: function(password) {
   var salt = new Buffer(this.salt, 'base64');
   return crypto.pbkdf2Sync(password, salt, iterations, keylen).toString('base64');
   crypto.randomBytes(..)
}

makeSalt: function() {
    return crypto.randomBytes(numOfBytes).toString('base64');
},

更新: 按照这里的建议,我添加了完整的代码。如果正确的方法是将javascript代码转换为java代码,您能帮我翻译上面的代码吗


共 (1) 个答案

  1. # 1 楼答案

    如果希望在Java中使用随机字节,则不应该这样做。您应该能够在Java中复制加密逻辑

    byte[] b = new byte[20];
    new Random().nextBytes(b);
    

    几乎所有的节点。js加密函数是通用函数,应该有自己的Java对应函数或第三方库

    更新

    如果必须通过java运行节点代码,可以添加此方法

    public static String runCommand(String command) {
        String output = "";
    
        try {
            String line;
            Process process = Runtime.getRuntime().exec( command );
    
            BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()) );
            while ((line = reader.readLine()) != null) {
                output += line;
            }
            reader.close();
    
    
        } catch (Exception exception) {
            // ...
        }
    
        return output;
    }
    

    然后像这样运行它

        String encryptedPassword = runCommand("node myEncryption.js  password=1234");