아작스 전송시 평문 암호화 채택완료
</p>
<p>//t.php</p>
<p> $.ajax({
url: "tt.php",
type: "post",
async:false,
data : ({ act:'test', A:'1', B:'2', C:'3' }),
success: function (data) {
dap = JSON.parse(data);
}
}) </p>
<p>
</p>
<p>//tt.php
if($act=='test') {
$A=$_POST['A'];
$B=$_POST['B'];
$C=$_POST['C'];
$result = [];
$result['AA'] = $A+$B;
$result['BB'] = $A+$C;
echo json_encode($result);
return;
}</p>
<p>
위 코드를 실행하면 '개발자 모드'에서 넘어오는 값을 확인할 수 있는데요
확인못하게 하는 방법으로
저 값을 암호화 tt.php 에서 암호화후 넘겨주고
t.php 에서 복호화를 하고 싶은데 어떻게 해야할지 모르겠네요
답변 5개
이건 제가 아주 오래전에 만든 함수인데 한번 응용해 보세요.
https://wittazzurri.com/editor/html_editor.php 서 확인해 보셈...
</p>
<p><script>
function uniString() {
for(i in arguments[0]) document.write((i == 0 ? "" : "|") + arguments[0][i].charCodeAt(0).toString(16));
}
function trueString() {
string = "";
arguments[0] = arguments[0].split("|");
for(i in arguments[0]) string += String.fromCharCode(parseInt(arguments[0][i],16));
document.write(string);
}
</script></p>
<p><div><script>uniString("그누보드 만만세")</script></div>
<div><script>trueString("adf8|b204|bcf4|b4dc|20|b9cc|b9cc|c138")</script></div></p>
<p>
데이터를 날릴 때는 adf8|b204|bcf4|b4dc|20|b9cc|b9cc|c138 을 날리고
얘를 받아서는 trueString("adf8|b204|bcf4|b4dc|20|b9cc|b9cc|c138") 로 받으면
그누보드 만만세라는 문자로 치환됩니다.
댓글을 작성하려면 로그인이 필요합니다.
정답을 서버에 받아 와서
javascript로 정답 여부를 검사하는 것이라면
정답 검사를 서버에서 하고
결과만 보내 주는 것이 좋지 않을까요?
댓글을 작성하려면 로그인이 필요합니다.
아무리 봐도 보기가 좀 찝찝해서요. 문자 중간에 | 이 들어가는 모양새가 폼이 안 나서
약간 다른 방식으로 바꿨습니다.
</p>
<p><script>
function uniString(uni) {
for (gz = "", i = 103; i <= 122; i++) gz += String.fromCharCode(i);
for (i in uni) document.write((i == 0 ? "" : gz[Math.floor(Math.random() * 19)]) + uni[i].charCodeAt(0).toString(16));
}
function f0String(str) {
for (f0 = _f0 = "", i = 0; i < str.length; i++) _f0 += str[i].replace(/^[g-z]/, "|");
_f0 = _f0.split("|");
for (i in _f0) f0 += String.fromCharCode(parseInt(_f0[i],16));
document.write(f0);
}
</script>
<div><script>uniString("그누보드 만만세")</script></div>
<div><script>f0String("adf8gb204qbcf4tb4dcn20wb9ccjb9ccuc138")</script></div></p>
<p>
댓글을 작성하려면 로그인이 필요합니다.
자바스크립트에서 암호화된 것을 php에서 복호화하는 라이브러리는 구글검색하면 나올텐데요
php에서 암호화된 것을 자바스크립트에서 복호화하는 라이브러리가 있나 모르겠군요
그런데 개발자 모드에서 확인하는 것과 브라우저에서 넘어온 값을 사용하는 것이 어떤 차이가 있는지 모르겠네요
어차피 개발자 모드에 나오는 값을 브라우저에서 사용을 할텐데...
답변에 대한 댓글 2개
질문이 명확하지않지만 하여튼 정답이 질문과 같은 한자리 숫자값이라면 다음처럼 하세요
알파벳과 숫자를 섞어서 베열을 만들고 그중 어느 한곳($nn)을 지정해서 정답을 넣어주는 것입니다
15번째에 정답이 몇번쩨인지 알려주는 값($nn)이 들어갑니다
이렇게 하면 소스를 보지않는 이상 정답을 알 수가 없습니다
더 어렵게 만들 수도 있지만 질문 정도의 것은 이 정도면 될 것으로 보입니다
tt.php
function my_ans($ans){
$tmp1 =array(1,1,1, 2,2,2,3,3,3,4,4,4,5,5,6,6,7,7,8,8,9,9,0.0); $tmp2 = range('a', 'j');
$tmp3 = array_merge($tmp1 , $tmp2);
shuffle($tmp3); $nn= rand(2,9);
$tmp3[$nn]=$ans; $tmp3[15] = $nn;
$str= implode('',$tmp3); // echo $str;
//$nn= substr($str, 15,1); $ans = substr($str,$nn,1); //테스트용
// echo '<br>'. $nn.'==>'.$ans;
return $str;
}
~~~
$result['AA'] = my_ans($A+$B);
$result['BB'] = my_ans($A+$C);
========================
t.php
자바스트립트에서
dap = JSON.parse(data);
nn1 = dap.AA.substr(15,1); Aans =dap.AA.substr(nn1,1);
nn2 = dap.BB.substr(15,1); Bans =dap.BB.substr(nn2,1);
alert(nn1+'=='+Aans +"\n"+ nn2+'=='+Bans);
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
퀴즈게임이라고 한다면
아작스로 정답을 가져오는데 개발자모드로 미리 볼수 있으니 문제가 되서요
ps. 검색으로 찾을수가 없어서 질문 드린거에요..