Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql SHA1&x2B;SQL中的盐哈希_Mysql_Sql_Random_Hash - Fatal编程技术网

Mysql SHA1&x2B;SQL中的盐哈希

Mysql SHA1&x2B;SQL中的盐哈希,mysql,sql,random,hash,Mysql,Sql,Random,Hash,我编写了以下程序: delimiter ;; CREATE PROCEDURE hashPassword() BEGIN DECLARE n INT DEFAULT 0; DECLARE i INT DEFAULT 0; SELECT COUNT(*) FROM users INTO n; SET i=0; WHILE i<n DO SET @salt := FLOOR(RAND() * 0xFFFFFFFF); SELECT password FROM users L

我编写了以下程序:

delimiter ;;
CREATE PROCEDURE hashPassword()
BEGIN
DECLARE n INT DEFAULT 0;
DECLARE i INT DEFAULT 0;
SELECT COUNT(*) FROM users INTO n;
SET i=0;
WHILE i<n DO  
    SET @salt := FLOOR(RAND() * 0xFFFFFFFF);
    SELECT password FROM users LIMIT i,1 INTO @pwd;
    SELECT SHA1(CONCAT(@pwd, @salt)) INTO @hashedpwd;
        UPDATE users
        SET salt=@salt, hashedPassword=@hashedpwd
        WHERE password=@pwd;
    SET i := i + 1; 
END WHILE;
END;
;;
并替换
其中password=@pwd编码,其中username=@username

很好, 由于您正在使用该查询更新表:

UPDATE users
SET salt=@salt, hashedPassword=@hashedpwd
WHERE password=@pwd;
它使用给定的密码为所有行写入相同的salt/hash密码。这就是你看到这些数据的原因


我很确定您的RAND每次都会创建不同的随机值,但您只需使用相同的数据一次更新所有行。

为什么不使用第一个选择来获取所有数据并将其用于更新?也许光标会在这里帮助你。。。有关详细信息,请参阅
UPDATE users
SET salt=@salt, hashedPassword=@hashedpwd
WHERE password=@pwd;