【问题标题】:Running Javascript Code Used to Run on NodeJS [closed]运行用于在 NodeJS 上运行的 Javascript 代码 [关闭]
【发布时间】:2014-07-04 06:25:26
【问题描述】:

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

问题是 - 我该怎么做?

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代码,你能帮我翻译一下上面的代码吗?

【问题讨论】:

  • 不要。如果您不知道如何将特定语言的功能移植到 Java,可以咨询我们。
  • @alandarev,我添加了完整的代码。你能帮我把它转换成java吗?
  • 我不熟悉加密模块.. 但是这个网站上的人不仅仅是我。明智的做法是让这个 questino 保持原样,接受答案,然后创建新问题,以便它返回到“新问题”页面。

标签: java javascript node.js


【解决方案1】:

你不应该这样做,如果你想要 Java 中的随机字节这样做。您应该能够在 Java 中复制加密逻辑。

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

几乎所有 Node.js 加密函数都是通用的,并且应该有自己的 Java 对应物或 3rd 方库。

更新

如果您必须通过 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");

【讨论】:

  • 谢谢乍得。为了简单起见,我没有带来整个代码。所以我编辑了问题。你能帮我把代码转换成javacode吗?
猜你喜欢
  • 2012-10-23
  • 1970-01-01
  • 2012-07-03
  • 1970-01-01
  • 2017-01-28
  • 1970-01-01
  • 2017-06-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多