Вы не можете легко - это зашифровано! Вам нужно было бы извлечь каждую запись, расшифровать ее и затем сравнить открытый текст
. Это правильный способ решения проблемы https://www.sitepoint.com/how-to-search-on-securely-encrypted-database-fields/
Ниже приведена моя попытка использования столбца индекса на основе CRC * 1006. *
<?php
namespace App\ModelTraits;
use Illuminate\Support\Facades\Crypt;
/**
*
*/
trait EmailSigTrait
{
public function setEmailAttribute($value)
{
$this->attributes['email'] = Crypt::encryptString($value);
$this->attributes['emailsig'] = Self::crcemail($value);
}
public function getEmailAttribute()
{
if(!isset($this->attributes['email'])){
return;
}
$value = $this->attributes['email'];
if (empty($value)) {
return;
}
return strtolower(Crypt::decryptString($value));
}
static function crcemail($email)
{
$email = strtolower($email);
// anonymise the email
$name = str_before($email,'@');
$anon = substr($name, 0, 1) .
substr($name, strlen($name)/2,1) .
substr($name, -1) .
'@' . str_after($email, '@');
return sprintf(crc32(strToLower($anon)));
}
protected function findByEmailSig($email, $model)
{
$email = strtolower($email);
$candidates = $model::where('emailsig', $model::crcemail($email))->get();
foreach ($candidates as $candidate) {
if (strtolower($candidate->email) == $email) {
return $candidate;
}
}
return false;
}
}
Включите эту черту в модель с зашифрованным адресом электронной почты.
Добавьте текстовый столбец для 'emailsig'
При сохранении поля электронной почты значение crcсоздается для частей адреса электронной почты, а электронная почта зашифрована.
При получении электронной почты она расшифровывается
При нахождении электронной почты она рассчитывает CRC для поиска пользователем, а затем сравнивает, чтосо значением CRC, сохраненным для каждого адреса электронной почты. Поскольку может быть несколько совпадений (более одного электронного письма с одним и тем же значением CRC), он будет перебирать возможные варианты, пока не найдет правильное электронное письмо.
В зависимости от того, как вы шифруете электронную почту сегодня, вы можетедолжны адаптироваться, чтобы соответствовать.