Notice
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- xe
- 폼메일
- php 시큐어코딩
- 설치
- C#
- 자바스크립트
- chart.js
- roundcube
- not working
- android 효과음
- PHP
- Mail Server
- soundpool
- WebView
- Android
- php 취약점
- UML
- 자동 생성
- 안드로이드
- dovecot
- C# IO
- javascript
- html5
- curl
- 안드로이드 gcm
- 안드로이드 푸쉬
- FCM
- 안드로이드 푸시
- 우분투
- mysql
Archives
- Today
- Total
그러냐
[함수] 간단한 암호화/복호화 함수 본문
반응형
<?
function
EnCode(
$sText
,
$sCode
) {
$cntData
=
strlen
(
$sText
) - 1;
$cntCode
=
strlen
(
$sCode
) - 1;
$arrData
=
array
();
$arrCode
=
array
();
for
(
$i
= 0;
$cntData
>=
$i
;
$i
++)
$arrData
[
$i
] =
$sText
[
$i
];
for
(
$i
= 0;
$cntCode
>=
$i
;
$i
++)
$arrCode
[
$i
] =
$sCode
[
$i
];
$flag
= 0;
$strResult
=
""
;
for
(
$i
= 0;
$cntData
>=
$i
;
$i
++) {
$strResult
=
$strResult
. (ord(
$arrData
[
$i
]) ^ ord(
$arrCode
[
$flag
])) .
chr
(8);
if
(
$flag
==
$cntCode
)
$flag
= 0;
else
$flag
++;
}
return
base64_encode
(
$strResult
);
}
function
DeCode(
$sText
,
$sCode
) {
$sText
=
base64_decode
(
$sText
);
$arrData
= split(
chr
(8),
$sText
);
$arrCode
=
array
();
$cntData
=
count
(
$arrData
) - 2;
$cntCode
=
strlen
(
$sCode
) - 1;
for
(
$i
= 0;
$cntCode
>=
$i
;
$i
++)
$arrCode
[
$i
] =
$sCode
[
$i
];
$flag
= 0;
$strResult
=
""
;
for
(
$i
= 0;
$cntData
>=
$i
;
$i
++) {
$strResult
=
$strResult
.
chr
((int)(
$arrData
[
$i
]) ^ ord(
$arrCode
[
$flag
]));
if
(
$flag
==
$cntCode
)
$flag
= 0;
else
$flag
++;
}
return
$strResult
;
}
$testData
=
"안녕하세요"
;
$testKey
=
"asdjhhjksa"
;
$encodingData
= EnCode(
$testData
,
$testKey
);
$decodingData
= DeCode(
$encodingData
,
$testKey
);
echo
"$encodingData "
;
echo
"$decodingData "
;
$testData
=
"I am a Boy!! You are a Girl!!"
;
$testKey
=
"aaaa"
;
$encodingData
= EnCode(
$testData
,
$testKey
);
$decodingData
= DeCode(
$encodingData
,
$testKey
);
echo
"$encodingData "
;
echo
"$decodingData "
;
?>
여기서 sCode 는 열쇠코드 입니다. 이걸모르면 암호를 풀수가 없죠
sText의 바이트문자를 sCode의 바이트 문자로 XOR 한 것입니다. 예를 들어
sText =
"test"
sCode =
"key"
이면
t XOR k
e XOR e
s XOR y
t XOR k
이런식으로 암호화시킵니다.
실제연산은 아스키코드값으로 합니다.
실제 암호화된 데이터는
"3101031"
이며
""
로 구분됩니다. (참고로
CHR
(8) 입니다.)
DeCode함수에서는 암호화된 데이터를
키값을 이용해 풉니다.
PHP에 암호화/복호화 함수가 있지만 다른언어와 함께 쓸수있겠죠~^^;
예들들어 PHP <=> ASP 간에 데이터암호화해서 통신할수있겠죠..
==========================================
반응형
'php' 카테고리의 다른 글
[PHP] JSON 방식으로 Ajax 구현하기 (0) | 2016.06.23 |
---|---|
html 테이블 자동줄바꿈 (0) | 2016.02.29 |
[알고리즘] 암호화/복호화 함수(실전 응용 가능) (0) | 2016.02.22 |
md5(), crypt(), password() 등의 문제점 및 로그인 암호화 보안 (0) | 2016.02.22 |
스팸글 자동등록 방지 오픈소스 - Securimage,captcha (0) | 2016.01.25 |