发送使用 MCRYPT_3DES 加密的数据作为 URL 参数

发布于 2024-11-09 12:52:44 字数 838 浏览 2 评论 0原文

您好,

我正在使用以下 PHP 函数加密数据:

$enc_data = mcrypt_encrypt(MCRYPT_3DES, $_key, $_data, MCRYPT_MODE_CBC, $_iv);

如果我按照 $_GET 方法发送加密数据,则无法将其解密,因为 $enc_data 包含 /+ 符号:

QBlgcQ2+v3wd8RLjhtu07ZBd8aQWjPMfTc/73TPzlyA=

顺便说一句。我正在使用此函数在 .NET 2010 和 PHP 之间传输数据。

有什么想法如何解决这个问题吗?


解决了! 如果有人想知道如何使用 http_build_query()

<?php
echo "<a href='test.php?".http_build_query($enc_data)."'>test</a>";

$_data = str_replace("%3D", "=", $_GET['enc_data']);
$_data = str_replace("%2B", "+", $_GET['enc_data']);
$_data = str_replace("%2F", "/", $_GET['enc_data']);

echo $_data;
?>

HI,

I am encrypting data with following PHP function:

$enc_data = mcrypt_encrypt(MCRYPT_3DES, $_key, $_data, MCRYPT_MODE_CBC, $_iv);

If I send the encrypted data per $_GET method, it’s not possible to decrypt it back because the $enc_data contains / and + signs:

QBlgcQ2+v3wd8RLjhtu07ZBd8aQWjPMfTc/73TPzlyA=

Btw. I am using this function to transfer data between .NET 2010 and PHP.

Any ideas how to solve this problem?


Solved!
if someone want to know how to use http_build_query()

<?php
echo "<a href='test.php?".http_build_query($enc_data)."'>test</a>";

$_data = str_replace("%3D", "=", $_GET['enc_data']);
$_data = str_replace("%2B", "+", $_GET['enc_data']);
$_data = str_replace("%2F", "/", $_GET['enc_data']);

echo $_data;
?>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

无敌元气妹 2024-11-16 12:52:44

尝试使用 urlencode()http_build_query() 使加密字符串可以安全地在 URL 中传输。

Try using urlencode() or http_build_query() to make the encrypted string safe for transmission in a URL.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文