Nodejs中的Java密码

时间:2013-03-18 19:38:59

标签: java node.js encryption

我有把这个Java解密方法转换成Nodejs的任务,但是我并不真正理解这个Java的东西。我特别对PBEWithMD5AndDES感到困惑。请向我解释如何在Nodejs中重现这个解密。

private void readFile() {
  try {
    Cipher cipher = getCipher(2, "secret");
    DataInputStream dis;

    dis = new DataInputStream(new CipherInputStream(someInputStream, cipher));

    String field1 = dis.readUTF();
    String filed2 = dis.readUTF();
    dis.close();
  } catch (Exception e) { }
}

private Cipher getCipher(int mode, String password) throws Exception {
  Random random = new Random(43287234L);
  byte[] salt = new byte[8];
  random.nextBytes(salt);
  PBEParameterSpec pbeParamSpec = new PBEParameterSpec(salt, 5);

  SecretKey pbeKey = SecretKeyFactory.getInstance("PBEWithMD5AndDES").generateSecret(new PBEKeySpec(password.toCharArray()));
  Cipher cipher = Cipher.getInstance("PBEWithMD5AndDES");
  cipher.init(mode, pbeKey, pbeParamSpec);
  return cipher;
}

我认为我必须做类似的事情。

var inputStream = fs.createReadStream("file");
var decipher = crypto.createDecipher("des", "secret", new Buffer("0C9D4AE41E8315FC", "hex"));

inputStream.pipe(decipher).pipe(process.stdout);

1 个答案:

答案 0 :(得分:3)

PBEWithMD5AndDES指的是加密算法。来自Java Cryptography Extension (JCE) Reference Guide

  

PBEWithMD5AndDES :基于密码的加密算法,定义如下:RSA Laboratories,“PKCS#5:基于密码的加密标准”,版本1。5,1993年11月。请注意,此算法意味着CBC为密码模式和PKCS5Padding作为填充方案,不能与其他任何密码模式或填充方案一起使用。

您可能需要编写一些代码来在node.js中进行实际解密。这是一个可以帮助您入门的implementation in ruby