php 암호화 복호화 > PHP & Others

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


회원로그인

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

php 암호화 복호화

페이지 정보

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

본문

[출처] php 암호화 복호화|작성자 Gabriel
http://blog.naver.com/ssuyastory/100164941664


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

추천 0

댓글목록

등록된 댓글이 없습니다.

PHP & Others 목록

Total 193건 1 페이지
PHP & Others 목록
번호 제목 글쓴이 날짜 조회 추천
공지 PHP 튜닝과 최적화 nuno 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 05-01 42183 0
192 배열 stripslashes nuno 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 11-02 78 0
191 PHP 유용한 정규표현식 예제 nuno 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 10-16 104 0
190 php 섭씨 화씨 변환 nuno 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 01-16 2308 0
189 [Node.js] 배우는 방법 nuno 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 12-01 2278 0
188 정규표현식 pcre 문법, preg nuno 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 11-29 2575 0
187 자바스크립트 escape unescape php 구현함수 nuno 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 11-16 2701 0
186 정규표현식 nuno 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 11-14 2502 0
185 preg_match 멀티라인 정규표현식 예제 nuno 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 11-14 2363 0
184 그누보드 게시판 입력제한 늘리기 nuno 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 11-10 9330 0
183 리눅스(Linux) php 쉘(Shell) 스크립트 실행하기, 백그라운드로 php 사용하기… nuno 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 07-13 2893 0
182 스누피로 로그인하기(웹호스팅 트래픽정보 긁어오기) nuno 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 05-04 2878 0
181 php 정규표현식 nuno 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 03-11 3307 0
180 curl 로그인 nuno 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 03-11 3830 0
179 PHP backticks shell command (``) nuno 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 03-02 2930 0
178 변수에 저정된 값에 따른 조건문 결과 nuno 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 12-23 6206 0
177 3DES 암호화/복호화 예제 - 양방향 암호화 mcrypt_encrypt nuno 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 01-22 11666 0
176 mysql password sha1 nuno 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 10-11 9672 0
열람중 php 암호화 복호화 nuno 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 08-20 12546 0
174 윈도우용 php 다운로드 nuno 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 03-01 9295 0
게시물 검색

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