Когда вы шифруете пароль, он использует Hash::make()
, который использует внутреннюю функцию PHP password_hash()
Но когда вы шифруете, используя Crypt::encrypt()
, он использует openssl, base_64, ваш .env APP_KEY
как соль и некоторые другие вещи, которые здесь
/**
* Encrypt the given value.
*
* @param mixed $value
* @param bool $serialize
* @return string
*
* @throws \Illuminate\Contracts\Encryption\EncryptException
*/
public function encrypt($value, $serialize = true)
{
$iv = random_bytes(openssl_cipher_iv_length($this->cipher));
// First we will encrypt the value using OpenSSL. After this is encrypted we
// will proceed to calculating a MAC for the encrypted value so that this
// value can be verified later as not having been changed by the users.
$value = \openssl_encrypt(
$serialize ? serialize($value) : $value,
$this->cipher, $this->key, 0, $iv
);
if ($value === false) {
throw new EncryptException('Could not encrypt the data.');
}
// Once we get the encrypted value we'll go ahead and base64_encode the input
// vector and create the MAC for the encrypted value so we can then verify
// its authenticity. Then, we'll JSON the data into the "payload" array.
$mac = $this->hash($iv = base64_encode($iv), $value);
$json = json_encode(compact('iv', 'value', 'mac'), JSON_UNESCAPED_SLASHES);
if (json_last_error() !== JSON_ERROR_NONE) {
throw new EncryptException('Could not encrypt the data.');
}
return base64_encode($json);
}
Другими словами, у password_ha sh нет ключа для расшифровки, но у Crypt::encrypt()
есть, и если вы выбрали go с помощью crypt: : зашифруйте и сохраните его в базе данных, убедитесь, что вы получили копию своего .env файла APP_KEY