发送到INT的mysql字段的MD5密码

发送到INT的mysql字段的MD5密码,mysql,int,md5,field,Mysql,Int,Md5,Field,我正在向sql数据库发送一个加密密码(md5)。我无意中向整数列发送了md5加密。我输入的密码是“test”,在我的数据库中显示为“5”,然后我输入了一个密码“qwertyqwerty”,出于好奇,它显示为“2147483647”,有人能解释一下这是怎么回事吗?为什么int值如此不同?MD5不加密密码,而是对密码进行哈希运算 散列是一个单向函数,它接受给定的输入并创建可预测的输出(也就是说,给定的输入将始终具有相同的输出),理想情况下,即使非常相似的输入也会产生截然不同的输出 MD5哈希为128

我正在向sql数据库发送一个加密密码(md5)。我无意中向整数列发送了md5加密。我输入的密码是“test”,在我的数据库中显示为“5”,然后我输入了一个密码“qwertyqwerty”,出于好奇,它显示为“2147483647”,有人能解释一下这是怎么回事吗?为什么int值如此不同?

MD5不加密密码,而是对密码进行哈希运算

散列是一个单向函数,它接受给定的输入并创建可预测的输出(也就是说,给定的输入将始终具有相同的输出),理想情况下,即使非常相似的输入也会产生截然不同的输出

MD5哈希为128位。如果您尝试将这128位写入32位SQL列,则肯定会发生某些截断


如果不了解用于生成MD5的特定代码,将其转换为整数,然后将其写入SQL,就无法理解为什么在一种情况下得到的是一个小数字,而在另一种情况下得到的是有符号整数的最大值。如果要发布代码,我很高兴对它进行评论。

我无法解释为什么第一个值显示为5(我必须查看散列),但第二个值显示为它所做的,因为这是整型列可以容纳的最大值


当mysql将字符串MD5哈希转换为整数(或尝试转换)时,它超过了整数可以容纳的最大值,因此它保存了最大整数。

2147483647是有符号整数列的最大值。为什么要使用MD5进行密码哈希?PBKDF2或bcrypt是标准的选择。这是无意的,我从那时起就解决了这个问题(我想在md5中使用它,不需要真正的加密),但感谢您提供的信息!