php - Openssl_encrypt 使文本不适合通过 URL 中的 GET 发送到 php
问题描述
我开发了一个 Android 应用程序,使用我公司的活动目录用户/密码登录。当用户输入他的凭据时,密码被加密,我使用 GET 方法将信息发送到一个 php 文件。最近一个用户无法登录,我认为这是由于加密密码上有一个“+”符号。
我尝试禁用加密,他可以登录。所以这肯定是问题所在。
这是我用来加密数据的代码:
function encrypt_new($data) {
$OPENSSL_CIPHER_NAME = "aes-128-cbc"; //Name of OpenSSL Cipher
$CIPHER_KEY_LEN = 16;
$iv = 'fedcba9876543210';
$key = '0123456789abcdef';
if (strlen($key) < $CIPHER_KEY_LEN) {
$key = str_pad("$key", $CIPHER_KEY_LEN, "0"); //0 pad to len 16
}
$encryptedData = base64_encode(openssl_encrypt($data, $OPENSSL_CIPHER_NAME, $key, OPENSSL_RAW_DATA, $iv));
return $encryptedData;
}
此特定用户的结果 URL 是:
login.php?user=someuser&pwd=r+FjjfugRQXlcURU8eMOCQ==
我能做些什么呢?改变加密方式?我怎么能确定不会再发生这种情况?
解决方案
推荐阅读
- javascript - 如何在 Django 上使用 python-highcharts 显示多个图表?
- sql - 获取每条记录在固定时间窗口中列的分区总和
- mysql - MySql 更新查询以插入 JSON 值
- javascript - fs.createReadStream 没有找到文件
- c# - 错误 powershell c# visual studio
- javascript - 如何在 D3 树形图中显示多个节点父节点?
- php - 如何在浏览器中获取 php-rdkafka 消息我将在命令行中尝试给出输出但不在浏览器中
- python - 在与 c 扩展交互时,IPython 的行为与 CPython 不同
- java - 扫描仪 Java 的简单注册验证表
- regex - rubular中的多行java异常正则表达式