Mariadb SHA返回不同的结果i
我有一个填充了一些值的表,为了设置值,我使用了一个存储过程,该存储过程还计算了一个哈希函数并保存在数据库中。 在更新值的情况下,应重新计算哈希值。对于重新计算哈希,我使用以下过程:Mariadb SHA返回不同的结果i,mariadb,sha256,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_
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
你知道为什么吗?问题出在一个字段中,该字段的编码与表不同,当我在查询中使用它时,它的大小不同。我无法重现该问题,请参见。对于第二个问题,请简化为具有以下主体的函数:
RETURN SHA2(AuthCode,256)代码>。第一道工序可以减半。