【发布时间】:2019-06-29 16:48:35
【问题描述】:
我想使用传递给服务器的 PHP 解密一个加密字符串(在 Nodejs 中加密)。
我找到了完美的 Nodejs 加密/解密库:Cryptr。我在我的 JavaScript 文件中创建了一个连接,向我的服务器发送了一个包含加密字符串的请求。
现在基本上我想解密那个字符串。
看看Cryptr source,似乎他们使用aes-256-ctr作为算法方法,sha256作为加密方法。
我的 Nodejs:https://runkit.com/embed/keu82yjhwyxj
加密字符串:1d510024ad0a5da624b76a2be72022bff3aaadfe8ac5e0b6c178b00333
然后我在 PHP 中执行此操作:
<?php
$encrypted = "1d510024ad0a5da624b76a2be72022bff3aaadfe8ac5e0b6c178b00333";
$algorithm = "aes-256-ctr";
$secret_key = "myTotalySecretKey";
$iv = "";
$decrypted_data = openssl_decrypt(pack('H*', $encrypted), $algorithm, $secret_key, OPENSSL_RAW_DATA, $iv);
echo $decrypted_data;
但由于 IV 是在 Cryptr 中随机生成的,我如何在 PHP 中生成它?
如何使用 PHP 解密 Cryptr 加密字符串,使其返回“我喜欢披萨!”?
编辑:
改为 pack('H*', $encrypted) 尝试仅使用 $encrypted。此外,您只需要解密的数据、方法和密钥。
<?php
$encrypted = "1d510024ad0a5da624b76a2be72022bff3aaadfe8ac5e0b6c178b00333";
$algorithm = "aes-256-ctr";
$secret_key = "myTotalySecretKey";
$decrypted_data = openssl_decrypt($encrypted, $algorithm, $secret_key);
echo $decrypted_data;
【问题讨论】:
-
您的代码是否有效或有什么问题?不清楚
-
@SilvioCro 它不起作用。问题:我不确定如何解密由 Nodejs 的 Cryptr 依赖项生成的 PHP 字符串。
-
我未删除答案。
标签: php node.js encryption