更新具有相同数据散列的列

Posted

技术标签:

【中文标题】更新具有相同数据散列的列【英文标题】:Update column with same data hashed 【发布时间】:2014-11-02 07:45:15 【问题描述】:

我需要更新用户表中存储纯文本密码的列。它们需要进行哈希处理,我不希望用户注意到这种变化。

$users = SELECT * FROM user

foreach ($users as $user):
UPDATE user SET password = 'new value'
endforeach;

但是,如何在更新之前传入所有纯文本密码并对其进行哈希处理。

【问题讨论】:

【参考方案1】:

SQLUPDATE 语句可以读取表列的旧值并在赋值中使用。

UPDATE user
SET password = HASH_FUNCTION(password);

HASH_FUNCTION替换为您要使用的特定功能。

【讨论】:

感谢您的回复。我正在尝试使用双盐进行 sha1 哈希: sha1($password . SALT) 。盐)。我似乎想不出在查询中实现这个 php 函数的方法。 您的问题从未提及 PHP。它只标记了mysql,所以我认为你想要一个 SQL 解决方案。 SQL 查询也可以,对吗? SHA1() 也是一个 MySQL 函数。但由于某种原因,我无法做到这一点。 如果这是出于实际的安全目的,那么 sha1 散列只是一个创可贴。 我没有指定使用哪个哈希函数。

以上是关于更新具有相同数据散列的列的主要内容,如果未能解决你的问题,请参考以下文章

如何在pyspark中连接具有相同名称的列的值

在具有循环或 lambda 的多个数据帧中添加具有相同字符串值的列的更有效方法?

MySQL更新列的序列号按具有相同值的字段分组

将 pandas 数据框导出到 json 并返回到具有相同顺序的列的数据框

聚合具有两个或多个具有相同值的列的行

Python更新具有相同列和一些不同行的两个数据框