我一直在尝试将名为simplesamlphp的东西连接到django应用程序上。在
我马上就要到了……虽然我需要用Python复制这个php脚本的功能:
我已经将php中$raw变量的内容复制到64.rtf文件中。但是,当我运行Python等价物时,我得到一个错误,说明:
类型错误:填充不正确
PHP代码:
function getValue($raw) {
$val = $raw;
$url = parse_url($raw, PHP_URL_QUERY);
if (!empty($url)) $val = $url;
$arr = array();
$query = parse_str($val, &$arr);
#echo('<pre>');print_r($arr);
if (array_key_exists('SAMLResponse', $arr)) return $arr['SAMLResponse'];
if (array_key_exists('SAMLRequest', $arr)) return $arr['SAMLRequest'];
if (array_key_exists('LogoutRequest', $arr)) return $arr['LogoutRequest'];
if (array_key_exists('LogoutResponse', $arr)) return $arr['LogoutResponse'];
return rawurldecode(stripslashes($val));
}
function decode($raw) {
$message = getValue($raw);
#echo 'using value: ' . $message; exit;
$base64decoded = base64_decode($message);
$gzinflated = gzinflate($base64decoded);
if ($gzinflated != FALSE) {
$base64decoded = $gzinflated;
}
$decoded = htmlspecialchars($base64decoded);
return $decoded;
}
到目前为止,我只在Python中提出了这个问题:
^{pr2}$我没有得到什么?rawurldecode(条纹斜杠位??或url解析器??在
这些东西到底做了什么,这对解码至关重要?在
我希望你能帮忙。谢谢
它在这里,在它所有的荣耀。在
尝试对字符串进行B64解码时出错的原因是字符串不是真正的base64编码。base64编码数据的长度总是可以被4整除。你的绳子不是。为了使字符串长度平均可被4整除,在字符串的末尾附加“=”字符。在您的例子中,长度%4==3。因此,我们需要在字符串的末尾添加一个'=',以使它正确解码。在
相关问题 更多 >
编程相关推荐