为什么在同一密码上由两个不同的服务器产生不同的“散列”

时间:2014-05-22 17:38:11

标签: php laravel laravel-4

我有一个网络应用程序,我可以创建Tecnico

TecnicoController (应用程序网站)

        $tecnico = new Tecnico;
        $tecnico->idTecnico = Input::get('idtecnico');
        $tecnico->Nombre = Input::get('nombre');
        $tecnico->Apellido = Input::get('apellido');
        $tecnico->Telefono = Input::get('telefono');
        $tecnico->Contrasena = Hash::make(Input::get('idtecnico'));  //<--- hash of my pass, eg pass: 12 -> hash: $12345abc
        $path = public_path().'/tecnico';
        $fotoPerfil = Input::file('imagen');
        $fotoPerfil->move($path, Input::get('idtecnico'));
        $tecnico->Foto ='/tecnico/'.$tecnico->idTecnico;
        $tecnico->save();

此外,我有一个不同的项目,作为服务器从移动应用程序访问数据库。手机中的Tecnico可以通过输入contrasena(密码)和idTecnico(ID)

来访问您的帐户

TecnicoController (服务器)

        $idUnico = Input::get('idUnico');
        $contrasena = Hash::make(Input::get('contrasena')); //<--- hash of my pass: eg pass: 12 -> hash: $146435gzc (change)
        $tecnico = DB::table('Tecnico')->where('idTecnico', $idUnico)->where('Contrasena',  $contrasena)->first();

从服务器输入密码时会出现问题。 Hashin创建了一个存在于数据库中的不同值(创建Tecnico时)。

我如何获得数据库中相同的哈希值?

1 个答案:

答案 0 :(得分:1)

不幸的是,您无法在查询中轻松完成此操作,您最好的选择是抓住用户然后比较密码,就像这样。

$idUnico = Input::get('idUnico');
$tecnico = DB::table('Tecnico')->where('idTecnico', $idUnico)->first();

if($tecnico) {
    if(Hash::check(Input::get('contrasena'), $technico->Contrasena)) {
        // passwords are the same
    }
}