2012-09-25 49 views
0

我需要在javscript中將密碼編碼爲十六進制,然後在php中解碼。我有一個功能,但在JavaScript中做了兩件事。我試圖將其轉換爲PHP,但有一些JavaScript本地函數,我不知道什麼是PHP的等價物。Javascript函數到Php

編碼(JavaScript)的

function encodeToHex(str){ 
    var r=""; 
    var e=str.length; 
    var c=0; 
    var h; 
    while(c<e){ 
     h=str.charCodeAt(c++).toString(16); 
     while(h.length<3) h="0"+h; 
     r+=h; 
    } 
    return r; 
} 

功能解碼(JavaScript)的

function decodeFromHex(str){ 
    var r=""; 
    var e=str.length; 
    var s; 
    while(e>=0){ 
     s=e-3; 
     r=String.fromCharCode("0x"+str.substring(s,e))+r; 
     e=s; 
    } 
    return r; 
} 

的功能,解碼功能(PHP) < <這是什麼即時通訊試圖實現

function decodeFromHex($str){ 
$r=""; 
$e=str.length; 
$s; 
while($e>=0){ 
     $s=$e-3; 
     $r=String.fromCharCode("0x"+str.substring($s,$e))+$r; 
     $e=$s; 
    } 
    return $r; 
} 
+0

你爲什麼不使用SSL? – Leri

+0

http://php.net/manual/en/function.hexdec.php? – Crontab

+0

在JavaScript中,您可以使用'parseInt('255',16); // 0xFF'來編碼和'parseInt('0xFF',10); // 255'來解碼...如果它已經是一個整數,則使用'number.toString(16)'。 –

回答

0

您需要hexdec和​​功能。

順便說一下,你可以通過strlen()在php中獲得字符串長度。

在最後一個筆記中,客戶端編碼非常沒有意義,因爲它可以輕鬆地嗅探和解碼數據 - 如果您想確定,可以使用SSL over HTTPS。

+0

我對編碼和安全性不太瞭解。我做的最常見的事情是使用md5,但在這種情況下,我需要解碼它以便dosnt爲我工作。我如何使用SSL。你有鏈接推薦我嗎? –

0

在PHP解碼的十六進制值是可以做到用兩種:

current(unpack('H*', $str)) 

或者:

hex2bin($str); 

我希望你沒有真正的密碼編碼成HEX雖然

+0

是的。我打算使用MD5,但我需要解碼密碼,並在MD5我不能這樣做。另外我需要的是我在javacsript和php中工作的編碼。你推薦我什麼? –

+0

@JonathanCalb在這種情況下,你可能會發送明文;以十六進制編碼不會給予更多的保護,除非你設置你的服務器使用SSL(有很多howtos) –