如何在此函数中添加md5值

时间:2012-11-01 07:26:39

标签: php database function

我正在使用phpfox和userplane网络聊天,这个功能是从数据库中获取sessionGuid原始功能是: 功能1:

function get_current_online_session_login() {
        $oSrvSec = &App::getModuleService('Account', 'Security');
        $login = $oSrvSec->getCurrentUserLogin();
        $aReq = getRow(App::getT('online_session'), 'online_session_user = "' . $login . '"');
//      return $aReq['online_session_login'];
        return $aReq['online_session_id'];
    }

我在其中进行更改,因此它返回盐渍哈希但Chat无效并显示您无权进入聊天的错误。 以下是我在此代码中所做的更改:

function get_current_online_session_login() {
        $oSrvSec = &App::getModuleService('Account', 'Security');
        $login = $oSrvSec->getCurrentUserLogin();
        $aReq = getRow(App::getT('online_session'), 'online_session_user = "' . $login . '"');
        $salt='waka_waka_shaka_laka_8342394';
//      return $aReq['online_session_login'];
        $umSar = $aReq['online_session_id'];
        $saltedHash = md5($umSar . $salt);
        return $saltedHash;
    }

在这个文件中有2个session_id函数所以我不知道如何解决这个问题 这是第二个session_id函数: 功能2

function get_user_with_session_id($session_id) {
        $session = getRow(App::getT('online_session'), "online_session_id = '$session_id'");
//      $session = getRow(App::getT('online_session'), "online_session_login = '$session_id'");
        $oSecurityService = &App::getModuleService('Account', 'Security');
        $user = $oSecurityService->getUserByName($session['online_session_user']);      
        return isset($user) ? $user->aData['id'] : null;
    }

我需要帮助。 你可以看到函数1:和函数2:是我的common.php文件中的原始函数,这个函数返回session_id的正常数字,我想将session_id作为md5 salted hash或base_64返回。 感谢

3 个答案:

答案 0 :(得分:0)

首先必须检查crypt()方法是否支持MD5,然后将字符串传递给加密以及salt,从$ 1 $开始。请参阅crypt() on PHP.net

if (CRYPT_MD5 == 1) {
  $saltedHash' . crypt($umSar, '$1$waka_wak$') . "\n";
}

请注意,对于MD5,盐的长度必须为12个字符。

答案 1 :(得分:0)

如果您正在考虑取消加密online-session-id function get_current_online_session_login()加密mcrypt_decrypt,而这不是md5哈希的目的。

如果您想加密/解密,可以使用mcrypt_encryptbase64_encodebase64_decode,{{1}}等功能。

示例回答:encrypt/decrypt password

答案 2 :(得分:0)

首先你应该明白,session-id是什么。通常服务器无法识别用户已经在网站上执行过某些操作,每个请求都像是一次新访问。为了记住用户及其操作,服务器将它们与随机数一起存储,即session-id。

此会话ID将传递给浏览器,如果用户例如按下一个按钮,此会话ID将被处理回服务器。现在,服务器可以使用此编号查找存储的操作,因此将记住"用户。

在您的示例中,您获取了session-id,使用单向散列函数销毁它,并将其传递给浏览器。当浏览器处理这个无效的session-id时,服务器有没有机会来查找带有此无效号码的存储操作。

也就是说,session-id只是一个数字,用于重新绑定服务器上已存储的信息。当你改变这个数字时,它确实决不会提高安全性,因为浏览器只会发回他得到的东西,服务器必须识别它,无论他以前是否加密/混淆了它。

如果你的session-id是可预测的,比如203,204,...,那么你应该找到生成这些不适当数字的代码片段并修改这段代码,这样就可以产生真正的#34;随机数。