簡體   English   中英

如何在 postgresql 中使用 bcrypt 重新散列我的用戶密碼,而不在 php 中迭代它們?

[英]How I can re-hash my user's a password using bcrypt in postgresql without iterating them in php?

在我的數據庫中,我使用弱 hash,SHA1 作為密碼。 我想將它們遷移到更強大的 hash (bcrypt)。 通常通過以下 php 腳本完成:

$sql = "SELECT user_id,password from users";
/**
* @var $pdo database connection
*/
$statement = $pdo->prepare('UPDATE users SET password = :password WHERE user_id = :user_id");

foreach( $pdo->query($sql) as $user)
{
   $password  = password_hash($user['password'],PASSWORD_DEFAULT);
   $statement->bindParam(':password',$password);   
   $statement->bindParam(':user_id',$user['user_id']);
   $stmt->execute();
}

但是在大型數據集上更新將花費太長時間。 因此,您是否知道使用 postgresql 本地密碼更新 postgresql 中的所有用戶密碼 hash 的更快方法?

此外,上面的代碼將在遷移腳本中運行,它也可能導致部署延遲。

為了更新密碼,運行以下 sql:

UPDATE users SET password = crypt(users.password,gen_salt('bf')), double_hash=true;

確保密碼字段長度至少為 72 個字符。 成功登錄后,使用password_hash

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM