2013-07-29 35 views
0
base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5($key), $string, MCRYPT_MODE_CBC, md5(md5($key)))); 

    encrypt data - //AHT+GFkX2opXrPyZZ2fQerLDgspBn2tgA4107wrSrOg= 
    Cookie -  //AHT%2BGFkX2opXrPyZZ2fQerLDgspBn2tgA4107wrSrOg%3D 

我有一個加密加密記住我的用戶的ID。加密數據在保存到cookie中時發生變化,`+`變成`%2B`?

但是,加密後cookie會變得不同。因爲html代碼。

+成爲%2B=成爲%3D

我需要對數據進行解密

是無論如何要解決這個問題?

+3

'urldecode()'cookie的值。 –

+0

爲什麼不使用PHP的會話功能?加密很難得到正確的。在這種情況下,不應該使用相同的IV('md5(md5($ key))',而且你需要一個消息驗證代碼(例如HMAC-SHA-256,它可以由'hash_hmac ()')來確保數據的完整性。根據http://security.stackexchange.com/questions/38942/how-to-protect-against-padding-oracle-attacks,MAC應該在加密之後生成並在解密之前檢查。 – PleaseStand

回答

4

只需在PHP中使用urldecode($_COOKIE['name_of_cookie'])即可將字符串解碼回原始cookie值。

以下是關於URL編碼以及如何使用&的更多信息。 http://webdesign.about.com/od/forms/a/url_encoding.htm

官方的文檔(PHP手冊):http://php.net/manual/en/function.urldecode.php

+0

哈哈!多謝! – user2178521

+0

由於來源而受到傾向於downvote。 PHP手冊將是一個更好的來源,而不是about.com –

+0

沒什麼大不了的。只是說,我不會反對投票。我喜歡about.com所擁有的表格 –

相關問題