php - 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 字节的密钥
解决方案
推荐阅读
- webview - Android Webview 如果没有 Internet 错误自定义页面
- python - 如何线程化烧瓶应用程序并使用while循环运行以同时运行?
- wordpress - Lighthouse Audit 说,“指向跨域目的地的链接不安全”并显示一些在我的主题中不存在的 URL。如何修复它们?
- python - 为什么当我完成所有迁移时,django 框架中的数据没有存储在数据库中?
- c# - 如何显示跟踪任务的模式对话框?
- python - 如何按列比较两个CSV文件并使用pandas python将差异保存在csv文件中
- c++ - 如何查看::concat 2 个不同的范围视图?
- jenkins - 代码行数 - SonarQube 许可
- java - 无法理解 Java 8 的 Function<>
- java - Spring Data JPA - 按 Id 绑定而不是对象