Спойлер (Отобразить)
PHP:
скопировать код в буфер обмена
скопировать код в буфер обмена
- function base64_enc($str) {
- 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',
- 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',
- 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm',
- 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
- '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '+', '/', null
- );
- $base64_pad = '=';
- $string = '';
- if (($len + 2) < 0 || (($len + 2) / 3) >= (1 << 30)) {
- return NULL;
- }
- //$mem = round((($len + 2) / 3) * 4);
- for($i=0;$len>2;$i+=3,$len-=3) { /* keep going until we have less than 24 bits */
- }
- if ($len != 0) {
- if ($len > 1) {
- $string .= $base64_pad;
- } else {
- $string .= $base64_pad;
- $string .= $base64_pad;
- }
- }
- return $string;
- }
- function base64_dec($str)
- {
- function alloc($size) {
- $mem = '';
- while($size-- > 0) $mem .= ' ';
- return $mem;
- }
- -2, -2, -2, -2, -2, -2, -2, -2, -2, -1, -1, -2, -2, -1, -2, -2,
- -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2,
- -1, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, 62, -2, -2, -2, 63,
- 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -2, -2, -2, -2, -2, -2,
- -2, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
- 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -2, -2, -2, -2, -2,
- -2, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
- 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -2, -2, -2, -2, -2,
- -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2,
- -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2,
- -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2,
- -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2,
- -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2,
- -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2,
- -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2,
- -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2
- );
- $current = 0;
- $result = alloc($length);
- $i = 0; $j = 0;
- $base64_pad = '=';
- while (($ch = @$str{$current++}) && $length-- > 0) {
- if ($ch == $base64_pad) {
- if ($ch != '=' && (($i % 4) == 1 || ($length > 0))) {
- return NULL;
- }
- continue;
- }
- if ($ch < 0) {
- continue;
- } else if ($ch == -2) {
- return NULL;
- }
- switch($i % 4) {
- case 0:
- break;
- case 1:
- break;
- case 2:
- break;
- case 3:
- break;
- }
- ++$i;
- }
- switch($i % 4) {
- case 1:
- return NULL;
- case 2:
- $j++;
- case 3:
- $result{$j} = 0;
- }
- }
- }