El registro me guarda la contraseña en bcrypt (yo ya adapte el hash que necesito y reemplacé la funcion de momento para probar... hasta aca todo bien)
El problema es que en el SQLSrv tengo que guardar la contraseña en binary.
Código:
La contraseña me la guarda correctamente como la necesito, peeero necesito que esa misma la almacene en binarySQLSTATE[42000]: [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]No se permite la conversión implícita del tipo de datos nvarchar a binary. Utilice la función CONVERT para ejecutar esta consulta. (SQL: insert into [user_auth] ([name], [email], [password], [updated_at], [created_at]) values (Nombre, [email protected], 0xb13f7b1e2fc16d380d94b2b27fe5c3c3, 2019-02-13 12:37:58.817, 2019-02-13 12:37:58.817))
Yo tengo esta parte del codigo
Código PHP:
return User::create([
'name' => $data['name'],
'email' => $data['email'],
'password' => bcrypt($data['password']),
]);
Acá dejo el metodo de encriptación:
Código:
function bcrypt($str, $options = []){ //return app('hash')->make($value, $options); $key = array(); $dst = array(); $i = 0; $nBytes = strlen($str); while ($i < $nBytes){ $i++; $key[$i] = ord(substr($str, $i - 1, 1)); $dst[$i] = $key[$i]; } while ($i < 16){ $i++; $key[$i] = 0; $dst[$i] = $key[$i]; } $rslt = $key[1] + $key[2]*256 + $key[3]*65536 + $key[4]*16777216; $one = $rslt * 213119 + 2529077; $one = $one - intval($one/ 4294967296) * 4294967296; $rslt = $key[5] + $key[6]*256 + $key[7]*65536 + $key[8]*16777216; $two = $rslt * 213247 + 2529089; $two = $two - intval($two/ 4294967296) * 4294967296; $rslt = $key[9] + $key[10]*256 + $key[11]*65536 + $key[12]*16777216; $three = $rslt * 213203 + 2529589; $three = $three - intval($three/ 4294967296) * 4294967296; $rslt = $key[13] + $key[14]*256 + $key[15]*65536 + $key[16]*16777216; $four = $rslt * 213821 + 2529997; $four = $four - intval($four/ 4294967296) * 4294967296; $key[4] = intval($one/16777216); $key[3] = intval(($one - $key[4] * 16777216) / 65535); $key[2] = intval(($one - $key[4] * 16777216 - $key[3] * 65536) / 256); $key[1] = intval(($one - $key[4] * 16777216 - $key[3] * 65536 - $key[2] * 256)); $key[8] = intval($two/16777216); $key[7] = intval(($two - $key[8] * 16777216) / 65535); $key[6] = intval(($two - $key[8] * 16777216 - $key[7] * 65536) / 256); $key[5] = intval(($two - $key[8] * 16777216 - $key[7] * 65536 - $key[6] * 256)); $key[12] = intval($three/16777216); $key[11] = intval(($three - $key[12] * 16777216) / 65535); $key[10] = intval(($three - $key[12] * 16777216 - $key[11] * 65536) / 256); $key[9] = intval(($three - $key[12] * 16777216 - $key[11] * 65536 - $key[10] * 256)); $key[16] = intval($four/16777216); $key[15] = intval(($four - $key[16] * 16777216) / 65535); $key[14] = intval(($four - $key[16] * 16777216 - $key[15] * 65536) / 256); $key[13] = intval(($four - $key[16] * 16777216 - $key[15] * 65536 - $key[14] * 256)); $dst[1] = $dst[1] ^ $key[1]; $i=1; while ($i<16){ $i++; $dst[$i] = $dst[$i] ^ $dst[$i-1] ^ $key[$i]; } $i=0; while ($i<16){ $i++; if ($dst[$i] == 0) $dst[$i] = 102; } $encrypt = "0x"; $i=0; while ($i<16){ $i++; if ($dst[$i] < 16) { $encrypt = $encrypt . "0" . dechex($dst[$i]); } else { $encrypt = $encrypt . dechex($dst[$i]); } } return $encrypt; } }