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);
}
와 같은 방식으로 디코딩이 될것같아서 테스트를 해봤는데 제대로된 결과를 얻지못했습니다.
비트연산의 특성으로 미뤄 봤을때 접근방식만 올바르게 제시를 하면 키값을 알지못하더라도 복호화가 가능한게 아닌가요?
고수님들의 답글을 기다립니다 ..
_xor_merge()이 없다면 말씀하신 대로 결과값이 나올테지요.
키값을 알지못해도 복호화가 가능하면 암호화를 할 필요가 없지 않을까요? ^^