메뉴 건너뛰기

프로그램언어

조회 수 10626 추천 수 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.,/?!$@^*()_+-=:;~{}";

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

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

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


List of Articles
번호 제목 날짜 조회 수
280 MYSQL DB 다중접속을 해결 하는 한 방법 2021.03.26 284
279 MySQL DB 중복여부 검사하여 없는 것만 추가 2015.04.14 20157
278 MYSQL DB의 모든 테이블에서 문자열 검색 하기 2021.03.26 915
277 MYSQL 업데이트 두 번 하기 2014.02.27 19729
276 mysql 에러 구문 표시 2014.02.27 20349
275 MySQL(MariaDB) 테이블 만들기 2018.03.28 8154
274 mysql_affected_rows — 최근 MySQL 작업으로 변경된 행 개수를 얻음 2016.12.23 18807
273 mysql_free_result(); 관련 오류 2021.03.25 353
272 mysql_insert_id 2016.12.23 18752
271 mysql_real_escape_string 이진 데이터를 입력할 경우 이 함수를 사용해야 함 2016.12.23 18640
270 mysql_result — 결과 데이터를 반환 2016.12.23 18967
269 MySQL테이블의 내용을 엑셀파일(xls)로 다운로드 하기 2018.07.24 4798
268 parse_ini_file — Parse a configuration file 2016.12.23 19774
267 PEAR DB 관련 함수들 2021.03.26 690
266 PHP $_SERVER 함수 2019.02.25 1558
265 PHP + 유튜브(youtube) 동영상 업로드 연동 소스 2021.01.21 1141
264 PHP - 공공 DATA XML 파싱(PHP 버전) 2023.01.12 270
263 PHP continue 문 file 2015.04.14 21097
262 php date 날짜 관련 함수 file 2021.03.27 411
261 PHP eregi가 빠를까, strpos가 빠를까? 2018.10.27 4091
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 17 Next
/ 17

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

© k2s0o1d4e0s2i1g5n. All Rights Reserved