SHA返回不同的结果我MariaDB

时间:2018-06-16 07:15:50

标签: mariadb sha256

我有一个填充了一些值的表,为了设置值,我使用了一个存储过程来计算哈希函数并保存在数据库中。 在更新值的情况下,应重新计算哈希值。要重新计算哈希,我使用以下过程:

DELIMITER $$
CREATE PROCEDURE `sp_UpdateHash`(IN rkey int)
Begin
DECLARE AuthCode VarChar(10);

SET @input = concat('SELECT r_ac into @AuthCode
    FROM table_rec
    where r_key=',rkey);

PREPARE squery FROM @input;
EXECUTE squery;
SET @hashed = SHA2(@AuthCode,256);
select @hashed;
DEALLOCATE PREPARE squery;
end;

和用于计算哈希的程序:

CREATE PROCEDURE `sp_GetHash`(IN AuthCode VarChar(10))
BEGIN
    DECLARE hashed VarChar(64);
    SET hashed = SHA2(AuthCode,256);
    select hashed as 'Hash';
END

AuthCode相同,但是当我尝试在select命令之后处理值时哈希是不同的我得到了错误的代码。如果我将两个哈希值与其他结果进行比较,例如来自在线生成器,则结果类似于第二个函数:sp_GetHash

你知道为什么吗?

1 个答案:

答案 0 :(得分:0)

问题出在与表具有不同编码的一个字段中,当我在查询中使用它时,它具有不同的大小。