PHP에서 Base32 또는 Base64의 사용자 정의 구현 (라이브러리 또는 클래스/함수 집합)이 필요합니다.Base32 또는 Base64의 사용자 정의
함수는 URL 안전 문자열을 반환해야합니다.
PHP에서 Base32 또는 Base64의 사용자 정의 구현 (라이브러리 또는 클래스/함수 집합)이 필요합니다.Base32 또는 Base64의 사용자 정의
함수는 URL 안전 문자열을 반환해야합니다.
문자열 보안을 위해이 함수를 사용합니다. base64로 기능 구축에 액세스 권한이 없기 때문에
function base64_url_encode($input) {
return strtr(base64_encode($input), '+/=', '-_,');
}
function base64_url_decode($input) {
return base64_decode(strtr($input, '-_,', '+/='));
}
나는 당신이 제안 :
<?php
echo bencode("Gabriel Malca");
// R2FicmllbCBNYWxjYQ==
function bencode($string='') {
$binval = convert_binary_str($string);
$final = "";
$start = 0;
while ($start < strlen($binval)) {
if (strlen(substr($binval,$start)) < 6)
$binval .= str_repeat("0",6-strlen(substr($binval,$start)));
$tmp = bindec(substr($binval,$start,6));
if ($tmp < 26)
$final .= chr($tmp+65);
elseif ($tmp > 25 && $tmp < 52)
$final .= chr($tmp+71);
elseif ($tmp == 62)
$final .= "+";
elseif ($tmp == 63)
$final .= "/";
elseif (!$tmp)
$final .= "A";
else
$final .= chr($tmp-4);
$start += 6;
}
if (strlen($final)%4>0)
$final .= str_repeat("=",4-strlen($final)%4);
return $final;
}
function convert_binary_str($string) {
if (strlen($string)<=0) return;
$tmp = decbin(ord($string[0]));
$tmp = str_repeat("0",8-strlen($tmp)).$tmp;
return $tmp.convert_binary_str(substr($string,1));
}
?>
이것은 유일한 정답입니다. 이 질문은 수정해서는 안됩니다. 보안 문제로 인해 일부 호스트에서 base64_ 기능을 사용하지 못하게 할 수 있습니다. 예, 표준 PHP 설치가 거의 불가능합니다. 그러나 내장 함수를 비활성화하는 것이 가치있는 경우가 있습니다. –
@JohnHunt URL 안전이 아니기 때문에 이것이 올바르지 않습니다. –
@JonGrant 그래서 urlencode와 urldecode가 존재합니다. –
왜 http://php.net/manual/fr/function.base64-encode. PHP? –
그리고 http://php.net/base_convert - 설명서의 모든 곳에 모든 메모가 있습니다, 덤 - te - 덤. – hakre
** 사용자 정의 ** 구현이 필요한 이유는 무엇입니까? –