gpt4 book ai didi

php - URL参数中的加密值(mcrypt_encrypt)在请求时产生不同的结果。如何处理这种情况?

转载 作者:行者123 更新时间:2023-11-29 07:33:10 24 4
gpt4 key购买 nike

我正在使用以下函数来加密字符串 ($str),并使用 key ($key) 来创建唯一 key 。

示例代码:

<?php

$key = "####";
$str = "123456789";

$encrypted_key = base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5($key), $str, MCRYPT_MODE_CBC, md5(md5($key))));

echo $encrypted_key; // 3rfmDKb/Ig5FuUnkY8fiHpqA3FD4PflXMksJw+6WAns=
?>

该函数返回由特殊字符(包括 '+' )组成的值。我将此值作为唯一 ID 存储在数据库中。

但是在某些情况下,我需要通过 URL 传递 $encrypted_key 。 IE;用于将其与RESFful Web 服务一起使用

示例网址:

www.example.com/index.php?encrypted_key=3rfmDKb/Ig5FuUnkY8fiHpqA3FD4PflXMksJw+6WAns=

但是当通过 URL 请求时,会将“+”解码为“空格”

代码:

echo $encrypted_key = $_REQUEST['encrypted_key'];

// 3rfmDKb/Ig5FuUnkY8fiHpqA3FD4PflXMksJw 6WAns=

此转换进一步影响数据库检查:

“3rfmDKb/Ig5FuUnkY8fiHpqA3FD4PflXMksJw 6WAns=”与“3rfmDKb/Ig5FuUnkY8fiHpqA3FD4PflXMksJw+6WAns=”

此外,我还担心将这些加密值存储到索引的 MySQL DB 列中。

这里应该采用什么最佳实践?任何建议将不胜感激。

最佳答案

此答案仅解决表示问题,而不解决可能错误的加密使用问题。

当您构建具有特殊表示规则(例如数据库查询、URL 中的路径、HTML 代码、JS 代码等)的对象时,您必须确保对值执行正确类型的编码,以便它们往返时不会造成损害.

对于数据库查询参数,不要使用字符串连接。使用准备好的语句和占位符。

对于 URL,请使用正确的 URL 编码函数或 URL 构建器来构建 URL,不要盲目连接字符串。

关于php - URL参数中的加密值(mcrypt_encrypt)在请求时产生不同的结果。如何处理这种情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31884136/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com