2014-03-13 2 views
-1

에서 볼 수 있으므로 이미 디코딩하고 인코딩하는 방법을 이미 관리했습니다. 이는 2 가지 기능을 통해 수행됩니다. 그래서 여기에 결과 페이지에서와 같이 양식 데이터를 암호화되었지만 URL

http://goldextra.com/b/id_color.php

당신이 단어를 입력하면

, 그것은 인코딩 얻을 것이다 예이다. 하나의 입력 그렇다면 = testword URL이 일이 http://goldextra.com/b/balloony.php?name=testword

것 대신에 나는 자체 점검이 http://goldextra.com/b/balloony.php?name=k484z52646w5i474 (물론 사이트처럼 보이게 의 URL을 원하는 암호화는 보이지 않지만 단어는 표시되지 않습니다.)

지금 가지고있는 코드를 어떻게 변경해야하나요? 폼 사이트 나 resu에서 코드를 변경해야합니까? 사이트?

FORM 코드

<form action="balloony.php" class="sign-up" method="get" class="sign-up"> 
<h1 class="sign-up-title">Whats the word?</h1> 
<input type="text" class="sign-up-input" placeholder="Enter your baloony" name="name" autofocus> 
<input type="submit" value="baloony it!" class="sign-up-button"> 

결과 사이트

<?php 
function encode($string,$key) { 
$key = sha1($key); 
$strLen = strlen($string); 
$keyLen = strlen($key); 
for ($i = 0; $i < $strLen; $i++) { 
    $ordStr = ord(substr($string,$i,1)); 
    if ($j == $keyLen) { $j = 0; } 
    $ordKey = ord(substr($key,$j,1)); 
    $j++; 
    $hash .= strrev(base_convert(dechex($ordStr + $ordKey),16,36)); 
} 
return $hash; 
} 

function decode($string,$key) { 
$key = sha1($key); 
$strLen = strlen($string); 
$keyLen = strlen($key); 
for ($i = 0; $i < $strLen; $i+=2) { 
    $ordStr = hexdec(base_convert(strrev(substr($string,$i,2)),36,16)); 
    if ($j == $keyLen) { $j = 0; } 
    $ordKey = ord(substr($key,$j,1)); 
    $j++; 
    $hash .= chr($ordStr - $ordKey); 
} 
return $hash; 
} 
?> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title><? echo htmlspecialchars($_GET["name"]) . '!'; ?></title> 
<style type="text/css"> 
.BIG { 
    font-size: 250px; 
font-weight: bold; 
font-family: "Palatino Linotype", "Book Antiqua", Palatino, serif; 
text-align: center; 
} 
</style> 
</head> 
<body class="BIG"> 


<?php 
$name = htmlspecialchars($_GET['name']); 
$urlENC = encode($name ,"whateverkey"); 
$urlDEC = decode($urlENC ,"whateverkey"); 
echo htmlspecialchars($_GET["url"]) . ''; 
echo $urlENC; ?> 
<br /> 
<? echo $urlDEC; ?> 
+0

양식 제출시 값을 인코딩하려면 javascript가 필요합니다. 그러나 정확한 목적은 무엇입니까? 그것이 안전하다면, ssl을 사용하는 것이 훨씬 더 좋은 선택입니다. – jeroen

+0

당신이 달성하고자하는 것은 거의 무의미하지만, 가장 직접적인 방법은 자바 스크립트 함수를 만드는 것입니다. – Kei

+0

그래, URL에 양식 정보가 포함되기를 바랍니다. 사람들이 링크를 copypaste 수 있습니다. 하지만 나는 사람들이 단지 URL을보고 내용이 무엇인지 알기를 원하지 않습니다. @ 케이 어떻게 그 기능을 정확히 구현할 수 있습니까? (신인으로서 나는 아직도 ...) – TobiasH

답변

1

그래서 그래, 당신은 자바 스크립트를 사용하여 할 필요가 있지만,이 때문에 SHA를 사용할 수 없습니다 해시가 생성되고 서버 측에서 데이터를 다시 가져올 수 없습니다. 나는 매우 안전하지 않습니다 진수를 사용할 것입니다 내 예를 들어 (이것은 디코딩 할 매우 간단) :

자바 스크립트 기능이 게시하기 전에 매개 변수에

function stringToHex (tmp) { 
    var str = ''; 
    var tmp_len = tmp.length; 
    var c = 0; 
    for (var i=0; i < tmp_len; i++) { 
     c = tmp.charCodeAt(i); 
     str += c.toString(16); 
    } 
    return str; 
} 

사용.

이제 PHP 측 :

function hexToStr($hex){ 
    $string=''; 
    for ($i=0; $i < strlen($hex)-1; $i+=2){ 
     $string .= chr(hexdec($hex[$i].$hex[$i+1])); 
    } 
    return $string; 
} 

이 당신은 간다.

+0

그건 그렇고, 나는 그 코드를 당신이 제공하는 어떤 식 으로든 사용할 수 없었습니다. 양식 및 결과 사이트의 전체 코드를 게시 할 수 있다고 생각하십니까? – TobiasH

+0

농담을해야합니다. 7 달 전에 그 질문을했는데 지금은 효과가 없다고하던가요? 게다가 내가 모든 일을하길 바래?! 나는 당신이 시도조차하지 않았 음을 확신합니다. –

+0

글쎄, 내가 게시하려고 한 후에도 즉시 시도했다. 나는 그것이 작동하지 않는다는 것을 잊었다, 또는 적어도 나는 didnt 관리한다 ... (또한 저 시간에, 나는이 공개 토론을 아주 잘 알고 있고 언제 어떻게 그리고 언제 논평하는지) 미안해 그것이 당신을 기분을 상하게했다. – TobiasH