首页 > 解决方案 > Nodejs:在php中解密数据并在node js中重写

问题描述

我有一些 php 解密代码,我想在节点 js 中重写这个解密。

    $password         = "password";
    $salt             = "salt";   
    $data = "somebase64data"
    $prepared_key         = openssl_pbkdf2($password, $salt, 256, 65536, "sha256");
    $rtc             = openssl_decrypt(base64_decode(data),"AES-256-CBC", 
    $prepared_key, OPENSSL_RAW_DATA, "LQjFLCU3sAVplBC3");
    $rtc            = gzdecode($rtc);
    file_put_contents(dirname(__FILE__) . '/log/tcs.new.crypt.' . $o . '.rtc.log', $rtc);

我尝试这样做:

function decrypt(text, salt, iv) {
    const password = "password";
    crypto.pbkdf2(password, salt, 65536, 256, "sha256", (err, key) => {
      try {
        const decipher = crypto.createDecipheriv("aes-256-cbc", key, iv);
        const decrypted = decipher.update(text, "base64", "binary");
        decrypted += decipher.final("binary");
      } catch (error) {
        throw new Error(error)
      }
    });
  }
  decrypt(plainText, salt, iv);

然后我有这个错误:无效的密钥长度。我知道我在 pbkdf2 之后的密钥是一个长度为 256 字节的缓冲区。但是 createDecipheriv 函数需要一个长度为 32 字节的密钥

标签: phpnode.jsencryptioncryptographypbkdf2

解决方案


推荐阅读