메뉴 건너뛰기

프로그램언어

조회 수 10695 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

암호화 encrypt 함수

 

### PHP암호화 함수
function encrypt($data,$k) { 
 $encrypt_these_chars = "1234567890ABCDEFGHIJKLMNOPQRTSUVWXYZabcdefghijklmnopqrstuvwxyz.,/?!$@^*()_+-=:;~{}";
 $t = $data;
 $result2;
 $ki;
 $ti;
 $keylength = strlen($k);
 $textlength = strlen($t);
 $modulo = strlen($encrypt_these_chars);
 $dbg_key;
 $dbg_inp;
 $dbg_sum;
 
 for ($result2 = "", $ki = $ti = 0; $ti < $textlength; $ti++, $ki++) {
  if ($ki >= $keylength) {
   $ki = 0;
  }
  $dbg_inp += "["+$ti+"]="+strpos($encrypt_these_chars, substr($t, $ti,1))+" ";   
  $dbg_key += "["+$ki+"]="+strpos($encrypt_these_chars, substr($k, $ki,1))+" ";   
  $dbg_sum += "["+$ti+"]="+strpos($encrypt_these_chars, substr($k, $ki,1))+ strpos($encrypt_these_chars, substr($t, $ti,1)) % $modulo +" ";
  $c = strpos($encrypt_these_chars, substr($t, $ti,1));
  $d;
  $e;
  
  if ($c >= 0) {
   $c = ($c + strpos($encrypt_these_chars, substr($k, $ki,1))) % $modulo;
   $d = substr($encrypt_these_chars, $c,1);
   $e .= $d;
  } else {
   $e += $t.substr($ti,1);
  }
  }
  
  $key2 = $result2;
  $debug = "Key  : "+$k+"\n"+"Input: "+$t+"\n"+"Key  : "+$dbg_key+"\n"+"Input: "+$dbg_inp+"\n"+"Enc  : "+$dbg_sum;
  return $e . "";
 }

 

암호화 사용
$data = "iloveyou!good"; //암호화 해서 넘길 값
$key = "123456"; //암호화에 이용될 키 값
$edata = encrypt($data,$key); //key 값을 이용해 data 값을 암호화해서 edata에 담았습니다.
$getdata = urlencode($edata); //이 값을 post가 아닌 get으로 넘긴다면 urlencode를 해주시는게 좋겠죠!
echo $getdata; //최종 암호화 및 url 엔코드까지 한 값 입니다.

 

출력 : imqyi%3Fov%40jstd

 

복호화 decrypt 함수



function decrypt($key2,$secret) {
 $encrypt_these_chars = "1234567890ABCDEFGHIJKLMNOPQRTSUVWXYZabcdefghijklmnopqrstuvwxyz.,/?!$@^*()_+-=:;~{}";
 $input = $key2;
 $output = "";
 $debug = "";
 $k = $secret;
 $t = $input;
 $result;
 $ki;
 $ti;
 $keylength = strlen($k);
 $textlength = strlen($t);
 $modulo = strlen($encrypt_these_chars);
 $dbg_key;
 $dbg_inp;
 $dbg_sum;
 for ($result = "", $ki = $ti = 0; $ti < $textlength; $ti++, $ki++) {
  if ($ki >= $keylength){
   $ki = 0;
  }
  $c = strpos($encrypt_these_chars, substr($t, $ti,1));
  if ($c >= 0) {
   $c = ($c - strpos($encrypt_these_chars , substr($k, $ki,1)) + $modulo) % $modulo;
   $result .= substr($encrypt_these_chars , $c, 1);
  } else {
   $result += substr($t, $ti,1);
  }
 }
 return $result;
}

 

 

복호화 사용


$data = urldecode($getdata); //urlencode로 받은 값을 먼저 urldecode 처리해야함
$key = "123456"; //암호화 할 때 이용한 키값과 동일하게 사용
$ddata = decrypt($data,$key); //복호화 처리
echo $ddata; //최종 복호화 값 전달하고자 하는 값이 제대로 전달 되었군요!

 

출력결과 : iloveyou!good

위 암호화 복호화 방식의 단점은
$encrypt_these_chars = "1234567890ABCDEFGHIJKLMNOPQRTSUVWXYZabcdefghijklmnopqrstuvwxyz.,/?!$@^*()_+-=:;~{}";

에 지정된 값만 암호화 된다는 것 입니다.

즉, 암호화 비교를 할 값이 없는건에 대해서는 추가 해야 합니다.

참고로, 한글은 안됩니다. ^^


  1. No Image 04Jul
    by
    2018/07/04 Views 5472 

    방금 INSERT 했던 SQL 문의 PK(primary key)값 가져오기

  2. No Image 04Jul
    by
    2018/07/04 Views 4132 

    PHP 휴대폰번호 짜르기 (preg_replace) "-" 넣기. 형식바꾸기

  3. [이클립스]PHP 개발환경 만들기

  4. No Image 28Mar
    by
    2018/03/28 Views 8285 

    MySQL(MariaDB) 테이블 만들기

  5. PHP 네이버블로그 원격 글쓰기 API 소스

  6. No Image 09Feb
    by 조쉬
    2018/02/09 Views 10695 

    PHP에서 암호화 encrypt 복호화 decrypt 해서 값을 넘기기

  7. base64 인코딩/디코딩 함수의 특징

  8. No Image 13Apr
    by
    2017/04/13 Views 18012 

    PHP 날짜 함수

  9. No Image 13Apr
    by
    2017/04/13 Views 19611 

    PHP, $_SERVER 변수

  10. No Image 13Apr
    by
    2017/04/13 Views 17706 

    정규식

  11. No Image 27Mar
    by
    2017/03/27 Views 21770 

    파일시스템, 폼 파일업로드 관련 함수

  12. No Image 27Mar
    by
    2017/03/27 Views 18023 

    네이버 자동 띄어쓰기를 이용하기

  13. No Image 07Mar
    by
    2017/03/07 Views 29915 

    php 엑셀 다운로드 구현

  14. No Image 07Mar
    by
    2017/03/07 Views 18979 

    두 날짜 사이의 차이 구하기

  15. No Image 07Mar
    by
    2017/03/07 Views 20182 

    날짜 일수 차이 계산

  16. No Image 07Mar
    by
    2017/03/07 Views 26436 

    php 세션 유지시간 늘리기

  17. No Image 07Mar
    by
    2017/03/07 Views 40749 

    리다이렉션(페이지 이동)의 3가지 방법, location.href

  18. No Image 07Mar
    by
    2017/03/07 Views 19142 

    자릿수만큼 앞에 0 붙이기

  19. No Image 07Mar
    by
    2017/03/07 Views 19209 

    세션 시작 / 세션 데이터 추가 / 세션 데이터 삭제 / 세션 종료하기

  20. No Image 07Mar
    by
    2017/03/07 Views 19035 

    도메인 앞에 자동으로 WWW를 붙이는 방법

Board Pagination Prev 1 ... 4 5 6 7 8 9 10 11 12 13 ... 17 Next
/ 17

하단 정보를 입력할 수 있습니다

© k2s0o1d4e0s2i1g5n. All Rights Reserved