php 암호화 복호화 > PHP & Others

본문 바로가기
사이트 내 전체검색


회원로그인

오늘 403
어제 403
최대 618
전체 461,801
마음을 나누는 인터넷 일기장 - 통플 다이어리
PHP & Others

php 암호화 복호화

페이지 정보

작성자 nuno 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 작성일13-08-20 11:17 조회16,201회 댓글0건

본문

[출처] php 암호화 복호화|작성자 Gabriel


1. 평문과 키값을 아스키 코드로 변환하여 더한 다음 암호화 시키고,

   복호화 에서는 암호문과 키값을 아스키 코드로 변환하여 뺀다음 복호화 시키는 방법

 

    특징 :

   대칭키 암호화 방식  

   암호화한 것을 복호화시 한글, 영문, 숫자가 깨지지 않는다. 간단한 알고리즘에 아이디어가 굿!

 

 

Usage is as follows:
$encrypted = encrypt("to encrypt string", "chitgoks");
$decrypted = decrypt($encrypted, "chitgoks");

$decrypted will return to encrypt string.

function encrypt($string, $key) {
  $result = '';
  for($i=0; $i<strlen($string); $i++) {
    $char = substr($string, $i, 1);
    $keychar = substr($key, ($i % strlen($key))-1, 1);
    $char = chr(ord($char)+ord($keychar));
    $result.=$char;
  }

  return base64_encode($result);
}

function decrypt($string, $key) {
  $result = '';
  $string = base64_decode($string);

  for($i=0; $i<strlen($string); $i++) {
    $char = substr($string, $i, 1);
    $keychar = substr($key, ($i % strlen($key))-1, 1);
    $char = chr(ord($char)-ord($keychar));
    $result.=$char;
  }

  return $result;
}

 

 

출처 : http://tech.chitgoks.com/2008/03/24/php-encrypt-decrypt-using-base64/ 

 

 

 

 

 

 

2. 위에 1번 소스를 응용해서 만든거

   평문을 아스키 코드로 변환하고 평문 문자열길이를 더한다음 키값과 XOR 하여 암호화

   복호화는 그 반대로 암호문과 키값을 XOR 하고 암호문의 문자열 길이만큼 빼서 복호화

 

   특징 :

   대칭키 암호화 방식

   암호화한 것을 복호화시 한글, 영문, 숫자가 깨지지 않는다.

 

  함수 :

  php strlen();함수는 문자열의 길이를 반환한다.

  php ord();함수는 문자를 아스키코드값으로 변환한다. 문자열을 집어 넣었다면 첫번재 문자를 아스키 코드값으로 변환후 반환

  php chr();함수는 아스키 코드를 문자로 변환한다.

  php substr();함수는 문자열을 내가 원하는 위치부터 위치까지를 잘라서 사용 할 수 있다.

 

function encrypt($value, $key){   
  $result = "";
  for($i=0; $i<strlen($value); $i++){  
   $val1 = chr(ord(substr($value, $i, 1))+strlen($value));
   $key1 = substr($key, ($i % strlen($key)), 1);

   $val1 = $val1 ^ $key1;   
   $result .= $val1;   
  }
  return base64_encode($result);  
 }

 $encrypted = encrypt("암호화","madebylee");
 echo $encrypted."<br>";

 

 function decrypt($value, $key){
  $result = "";
  $value = base64_decode($value);

  for($i=strlen($value)-1; $i>=0; $i--){
   $val2 = substr($value, $i, 1);
   $key2 = substr($key, ($i % strlen($key)), 1);
   
   $val2 = $val2 ^ $key2;
   $val2 = chr(ord($val2)-strlen($value));
   $result = $val2.$result;
  }
  return $result;
 }

 $decrypted = decrypt($encrypted, "madebylee");
 echo $decrypted;

 

 

 

 

 

3. 진수 변환을 이용한 암호화, 복호화

 

   평문을 10진수에서 8진수로 암호화

   복호화는 암호문을 8진수에서 10진수로 복호화

   

   특징 :

   암호문 복호화시 영문과 숫자는 괜찮은데 한글이 깨진다. 한글을 아스키코드로 변환하여 진수를 변환해서 그런듯.

   한글 안깨졌으면 대칭키로 만들어 봤을텐데 한글이 깨져서 테스트용으로 만들다 보니 대칭키 암호화 방식이 아님

   

   함수 :

   php decoct();함수는 10진수를 8진수로 변환한다.

   php octdec();함수는 8진수를 10진수로 변환한다.

   php strlen();함수는 문자열의 길이를 반환한다.

   php ord();함수는 문자를 아스키코드값으로 변환한다. 문자열을 집어 넣었다면 첫번재 문자를 아스키 코드값으로 변환후 반환

   php chr();함수는 아스키 코드를 문자로 변환한다.

   php substr();함수는 문자열을 내가 원하는 위치부터 위치까지를 잘라서 사용 할 수 있다.

 

function encrypt($value){   
  for($i=0; $i<strlen($value); $i++){  
   $val = chr(decoct(ord(substr($value,$i,1))));
   $rst .= $val;    
  } 
  $encode = base64_encode($rst);
  return $encode;   
 }

 

 function decrypt($value){ 
  $decode = base64_decode($value);

  for($i=0; $i<strlen($decode); $i++){  
   $val = chr(octdec(ord(substr($decode,$i,1))));
   $rst .= $val;
  }
  return $rst;
 }

 

 

 $test = encrypt("abcde");
 echo $test."<br>";

 $test1 = decrypt($test);
 echo $test1."<br>";

 

 

 

 

 

 

 

4. XOR을 사용한 대칭키 암호화, 복호화

 

   평문과 평문을 섞은 키값을 XOR연산하여 암호화 한다.

   리턴할때, 암호문과 키값을 같이 리턴

   복호화는 암호문을 받아 구분자를 이용해서 잘라서 암호문과 키 값을 XOR연산하여 복호화 시킨다.

 

   특징 :

   암호문을 복호화 할때 한글, 영문, 숫자 모두 사용가능 하다.

   키값은 함수안에서 암호화 되기 때문에 나도 모른다.

   간단하다. 

 

   함수 :

   php str_shuffle(); 함수는 안에 들어온 문자열을 섞어서 반환한다.

   php explode(); 함수는 구분자를 이용해 문자열을 잘라서 배열로 사용한다.

 

 

function encrypt($value){  
  $tmp = str_shuffle($value);

  $encode = $value ^ $tmp;
  return $encode.",".$tmp;
 }


 

 function decrypt($value){
 
  $val = explode(",",$value);
  $decode = $val[0];
  $key = $val[1];

  $decode = $decode ^ $key; 
  return $decode;
 }


 $decode = encrypt("암호화"); 
 echo $decode."<br>";


 $test2 = decrypt($decode);
 echo $test2."<br>";

[출처] php 암호화 복호화|작성자 Gabriel






출처 : 
[php] 64진수로 암호화하는 base64 함수


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

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

예제 (ex #1

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


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

 

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

 

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

예제 (ex #1

 <?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

댓글목록

등록된 댓글이 없습니다.

PHP & Others 목록

Total 194건 1 페이지
PHP & Others 목록
번호 제목 글쓴이 날짜 조회 추천
공지 PHP 튜닝과 최적화 nuno 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 05-01 42879 0
193 Mysql PASSWORD() PHP 함수 nuno 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 01-17 508 0
192 배열 stripslashes nuno 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 11-02 602 0
191 PHP 유용한 정규표현식 예제 nuno 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 10-16 793 0
190 php 섭씨 화씨 변환 nuno 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 01-16 3014 0
189 [Node.js] 배우는 방법 nuno 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 12-01 2939 0
188 정규표현식 pcre 문법, preg nuno 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 11-29 3357 0
187 자바스크립트 escape unescape php 구현함수 nuno 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 11-16 3488 0
186 정규표현식 nuno 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 11-14 3279 0
185 preg_match 멀티라인 정규표현식 예제 nuno 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 11-14 3047 0
184 그누보드 게시판 입력제한 늘리기 nuno 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 11-10 10388 0
183 리눅스(Linux) php 쉘(Shell) 스크립트 실행하기, 백그라운드로 php 사용하기… nuno 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 07-13 3870 0
182 스누피로 로그인하기(웹호스팅 트래픽정보 긁어오기) nuno 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 05-04 3691 0
181 php 정규표현식 nuno 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 03-11 4184 0
180 curl 로그인 nuno 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 03-11 5243 0
179 PHP backticks shell command (``) nuno 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 03-02 3779 0
178 변수에 저정된 값에 따른 조건문 결과 nuno 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 12-23 6971 0
177 3DES 암호화/복호화 예제 - 양방향 암호화 mcrypt_encrypt nuno 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 01-22 12659 0
176 mysql password sha1 nuno 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 10-11 12905 0
열람중 php 암호화 복호화 nuno 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 08-20 16202 0
게시물 검색

Copyright © nuno21.net All rights reserved. 상단으로
모바일 버전으로 보기