Laravel, как запустить обновление для столбца таблицы, используя старое значение - PullRequest
1 голос
/ 09 апреля 2020

У меня есть таблица пользователей с зашифрованными (не хешированными) паролями.

Я хочу обновить строки, использующие определенное шифрование (не все строки используют это шифрование)

I нужно использовать старое значение для пароля, расшифровать его и зашифровать, используя новое шифрование.

 $result = DB::connection('writer')
             ->table('users')
             ->where('pw', 'LIKE', 'oldEncryption')
             ->get();

 foreach($result as $r){
        $password = olddecrypt($r->pw);
        $newpassword = newencrypt($password);
        $r->pw = $newpassword;
 }

 DB::connection('writer')
     ->table('users')
     ->update($result);

вот неработающий "псевдокод", какой хороший подход для этого?

Ответы [ 2 ]

1 голос
/ 09 апреля 2020

Это должно помочь вам начать работу в правильном направлении.

$users = DB::connection('writer')
              ->table('users')
              ->where('pw', 'LIKE', 'oldEncryption')
              ->get();

foreach ($users as $user) {
    DB::connection('writer')
        ->table('users')
        ->where('id', $user->id)
        ->update(['pw' => newencrypt(olddecrypt($user->pw))]);
}

newencrypt и olddecrypt Я предполагаю, что это ваши собственные реализации.

0 голосов
/ 09 апреля 2020

Для начала нам нужно знать, какой был старый тип шифрования, если это был md5, вы можете попробовать сайты расшифровки md5, но вы не найдете расшифровки для всех ваших паролей.

, но если старый метод шифрования, более сложный, чем md5, вы не сможете расшифровать их любым известным мне способом, вы можете просто сравнить 2 зашифрованных значения, как в bcrypt, который используется в laravel.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...