CI 묻고 답하기

제목 Encrypt 객체 관련 의문점
글쓴이 내일은 작성시각 2011/03/21 14:23:16
댓글 : 4 추천 : 0 스크랩 : 0 조회수 : 20422   RSS
ci 2.0 소스 분석중에 궁금한점이있습니다.

CI_Encrypt 객체의 암호화방식중에 _xor_encode 의 인코딩 방식을 보면

램덤 문자열을 끼워 넣어서 xor 연산을 하는듯합니다

원문이 S 라고 할때 .

랜덤키값 R

키값 K

 (R^K ).(S^R^K) 방식의 암호화 알고리즘을 가지고 있는데 ..문자열을 잘라서 R^K 의 값을 알아낸다면 랜덤 키와

암호화키를 따로 알지못하더라도 

for ($i = 0; $i < strlen($encode_str); $i += 2)
{
$dec .= substr($encode_str, $i, 1) ^ substr($encode_str, $i+1, 1);
}
 
와 같은 방식으로 디코딩이 될것같아서 테스트를 해봤는데 제대로된 결과를 얻지못했습니다.

비트연산의 특성으로 미뤄 봤을때 접근방식만 올바르게 제시를 하면 키값을 알지못하더라도 복호화가 가능한게 아닌가요?

고수님들의 답글을 기다립니다 ..

 다음글 CI환경에서 노프레임으로 배경음악이 계속 유지되게하려면... (1)
 이전글 뷰에 모델이나 컨트롤러에 쓰이는 함수쓸 수 있나요?? (1)

댓글

변종원(웅파) / 2011/03/21 14:35:34 / 추천 0
encoding시  xor 연산후 _xor_merge() 를 이용하여 스트링과 키를 조합하고 있습니다.

_xor_merge()이 없다면 말씀하신 대로 결과값이 나올테지요. 

키값을 알지못해도 복호화가 가능하면 암호화를 할 필요가 없지 않을까요? ^^
내일은 / 2011/03/21 14:38:15 / 추천 0
 제가 비트 연산을 잘못 이해했을수도있습니다 .

(R^K ).(S^R^K) 이부분에 _xor_merge() 부분이 포함된것이 아닌가요?

(R).(S^R) 로 이어진 문장에 ^K 연산을 해서 결과 값이 (R^K ).(S^R^K)이렇게 나온다고 생각했는데 잘못된걸까요? ;;

말씀하신데로 키값을 알지못해도 복호화가 되지 않을까 해서 테스트중입니다 ㅎ;



변종원(웅파) / 2011/03/21 18:30:31 / 추천 0


말씀하신대로 R^K 값을 잘라낼 수는 있겠지만 어디서부터 그 값인지 알려면..
(알고리즘 짜서 돌리면 되기는 하겠죠. ^^)

그리고 (R^K ).(S^R^K) 이 값과  (R).(S^R) ^K 이 값은 다른 값입니다.

그리고 또 한가지 xor 연산은 서버에 mcrypt가 설치되지 않았을때의 대안입니다.
php설치시 가급적이면 php-mcrypt를 설치하라고 하고 있습니다.

내일은 / 2011/03/21 18:52:14 / 추천 0
 답변 감사합니다 ..
문자열 길이가 일정하지 않은 이유와 같은  이유인듯하네요 .
웅파님 같은 사수한분 계시면 일할맛날것같은데 .. ㅎㅎ

즐거운 하루 되세요 .^^