【发布时间】:2012-07-12 07:43:12
【问题描述】:
我正在使用以下technique 来加密/解密密码:
$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 编码/解码问题?
有没有办法解决这个问题?
谢谢
【问题讨论】:
-
为什么要在 URL 中传递密码?你不能使用会话或不透明的令牌吗?
-
这看起来有点矫枉过正。有什么理由不使用哈希密码代替吗?您甚至不需要密码的可逆算法。实际上,您应该避免尝试提出自己的密码加密/哈希方案...
-
因为我的移动项目是单独的,而我的 Web 应用程序是单独的项目,所以这就是为什么我使用这个东西从我的移动站点登录网站.. 以及任何其他替代解决方案来登录 Web 项目来自移动网站..
-
但是您在服务器端进行密码处理,您访问网站的位置并不重要。
-
适当的方式将是一个 Oauth 或类似 OpenID 的基于令牌的登录系统,如果简单的 cookie/会话不能解决它。当然,这也复杂得多......
标签: php passwords md5 encryption