php - 使用 MySQL 的 AES_ECRYPT 函数加密一个值,然后使用 PHP 在 URL 字符串中传递它

标签 php mysql aes

我需要使用 MySQL 的 AES_ENCRYPT 函数加密一个字符串,然后将该加密的字符串附加到 URL 的末尾,这样它就可以被另一端的 PHP 脚本解密和使用。

基本上,我正在加密字符串(使用 MySQL 的 AES_ENCRYPT),然后我使用 PHP 的 rawurlencode() 函数使其“URL 安全”。然后我将加密的字符串传递到一个 URL 中,然后由另一端的 PHP 脚本检索并成功解密……大约 95% 的时间。

似乎大约 5% 的字符串在加密过程中的某处被破坏,并且在通过 URL 传递后无法在另一端解码。有人可以帮我从这里出去吗?有没有 100% 万无一失的方法来做到这一点?我还尝试以不同的组合使用 urlencode() 和 base64_encode()。

谢谢。

最佳答案

已解决。

使用 MySQL 的 AES_ENCRYPT 函数加密字符串后,我使用 PHP 的 bin2hex() 函数将加密数据(二进制形式)转换为十六进制。然后我将十六进制作为字符串传递到 URL 的末尾。在另一端收到 URL 后,我便使用此自定义 PHP 函数将十六进制字符串恢复为二进制:

function hex2bin($data) {
    $len = strlen($data);
    return pack("H" . $len, $data);
}

从那里开始,剩下要做的就是使用 MySQL 的 AES_DECRYPT 函数和 wha-la 解密数据。成功恢复原字符串。

关于php - 使用 MySQL 的 AES_ECRYPT 函数加密一个值,然后使用 PHP 在 URL 字符串中传递它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3226057/

相关文章:

仅当条件为真时,mysql 在 SET 之后使用 IF

mysql - 连接 MySQL 表上的多个列

mysql - 多个 JOIN 太复杂

java - AES-128 加密字符串未正确填充

javascript - 解密 - 加密 crypto-js

cpanel - 什么是 PHP track_errors?

javascript - 通过基于选择的选择选项获取动态添加 DIV

php - Xcode AES 加密/解密 - php 兼容性问题

php - 按距离删除数组中的名称

php - 如何按月对表中的值求和?