我得到了將此Java解密方法轉換爲Nodejs的任務,但我並不真正瞭解這個Java的東西。我特別與PBEWithMD5AndDES
混淆。請向我解釋一下,我如何在Nodejs中重現這個解密。Nodejs中的Java密碼
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);
旁註:我覺得有趣的是Nodejs等價物只有5 LOC左右。 – buschtoens 2013-03-18 19:40:07
是的,但是一旦你使用它就會有多少LOC? :) – 2013-03-20 19:30:22