如何解决将 base64 传递给 PHP 中的 URL 以使用 OpenSSL 进行解码
我正在尝试通过 URL 传递参数。这个参数是 base64。
https://site/file?base=+EOOJZIWLfQwoiVT6rfdbj3sr9vabuzX84bcT38u9hQSW3d/ErsE9E2OlXRvc88x
使用 OpenSSL 在 PHP 文件中解密。当我发送它时,在 PHP 文件中它变成
"EOOJZIWLfQwoiVT6rfdbj3sr9vabuzX84bcT38u9hQSW3d/ErsE9E2OlXRvc88x"
它转义了 base64 中的“+”。
所以 OpenSSL 无法解密它,因为它得到了错误的 base64。我试过 urlencode
,但它转义 " / " 到 " %2f" 所以这里一样。
这是我的代码:
$user = urlencode($_GET['base64']); // user
$key = ('12345678901234567890123456789012');
$iv = ('1234567890123456');
$field_data = htmlspecialchars($user);
//$e = urldecode($field_data);
$output = openssl_decrypt($field_data,'AES-256-CBC',$key,$iv);
解决方法
通过使用 base64 进行编码解决,使用 base64-url 编码并通过 base64 解码在 php 中对其进行解码,使其返回正常的 base64 .. 然后将其传递给 openssl
$user = $_GET['x']; // user
function base64url_encode($data) {
return rtrim(strtr($data,'+/','-_'),'=');
}
function base64_url_decode($input) {
return strtr($input,'._-','+/+');
}
$last = base64_url_decode ( $user);
$key = ('12345678901234567890123456789012');
$iv = ('1234567890123456');
$output = openssl_decrypt($last,'AES-256-CBC',$key,$iv);
传递的url在哪里
https://site/file?base=-EOOJZIWLfQwoiVT6rfDbj3sr9vabuzX84bcT38u9hQSW3d_ErsE9E2OlXRvc88x
我使用客户端 C++ 来加密 aes 和 base64 url
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。