string base64_encode ( string $data )
(PHP 4, PHP 5)

이 함수는 모든 정보를 64개 문자로 구성된 64진수로 바꾸는 것으로 a-z, A-Z, 0-9, +, / 의 문자이며, 암호화 방식과는 거리가 멀고, 원 데이터보다 약 33% 더 많은 공간을 필요로 합니다.

<?php 
 $str = 'This is an encoded string'; 
 echo base64_encode($str); 
 // 결과: VGhpcyBpcyBhbiBlbmNvZGVkIHN0cmluZw== 
 ?>

64개 문자는 =가 포함한 문자인데, =는 단순히 4자리 수를 맞춰 줄 빈 공간을 채우는 의미 없는 문자이므로 신경쓰지 않아도 됩니다.

이 인코딩은 메일 본문처럼 8비트를 사용할 수 없는 전송 층에서 바이너리 데이터를 안전하게 전송하도록 설계되었습니다.

다만, GET이나 REQUEST로 전송시 +, / 문자가 문제시 되므로 urlencode 로 데이터를 보호하거나 다음과 같이 치환해서 데이터를 보호해줄 필요가 있습니다.

<?php
 function base64encode($string) { 
    $data = str_replace(array('+','/','='),array('-','_',''),base64_encode($string)); 
    return $data; 
 } 

 function base64decode($string) { 
    $data = str_replace(array('-','_'),array('+','/'),$string); 
    $mod4 = strlen($data) % 4; 
    if ($mod4) { 
        $data .= substr('====', $mod4); 
    } 
    return base64_decode($data); 
 } 

 $string = '1234567890가나다라마바사'; 
 $data = base64encode($string); 

 echo $data; // 결과: MTIzNDU2Nzg5MLChs6q02bbzuLa52bvn 
 echo '<br />'; 

 echo base64decode($data); // 결과: 1234567890가나다라마바사 
 ?>

0 댓글