2012-07-12 117 views
0

路過我使用以下technique加密後不工作/解密密碼:密碼解密的URL

$key = 'abcd'; 
$password = 'password'; 

$encrypted_password = base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5($key), $password, MCRYPT_MODE_CBC, md5(md5($key)))); 

$decrypted_password = rtrim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, md5($key), base64_decode($encrypted_password), MCRYPT_MODE_CBC, md5(md5($key))), "\0"); 

Above code is working for me on same page

,但是當我在URL通過這個加密的密碼到另一個網頁是這樣的:

example.com/authenticate.php?pass=CuESFcvXHnQkZaY79WUL3U2aY9TROkjZFETk9Ur+iFY= 

然後它不是以原始形式使用相同的密鑰解密它,我得到一些垃圾數據作爲結果。

我覺得像url 編碼/解碼的問題?

有什麼辦法可以解決這個問題嗎?

感謝

+0

你爲什麼要在URL中傳遞密碼?你不能使用會話或不透明的令牌嗎? – deceze 2012-07-12 14:22:10

+0

這似乎是一個矯枉過正的問題。任何你不用哈希密碼的理由?你甚至不需要可逆的密碼算法。事實上,你應該避免試圖想出你自己的密碼加密/散列方案... – Mahn 2012-07-12 14:23:54

+0

,因爲我的移動項目是分開的,我的web應用程序是獨立的項目,所以這就是爲什麼我用這個東西從我的網站登錄移動網站..以及任何其他替代解決方案從移動網站登錄Web項目.. – 2012-07-12 14:25:20

回答

6

+在URL中表示空格。如果要傳遞URL中的任意數據,尤其是在將其放入URL之前可能包含特殊字符,urlencode的數據。

1

你的猜測是正確的:

你應該把它連接到查詢字符串之前進行urlencode通參數。

urlencode($encrypted_password); 

然後urldecode解密

urldecode($encrypted_password); 

快樂編碼之前!