mysql十六进制乱码字符转换

原创 sauren  2019-02-01 13:55  阅读 84 views 次 评论 0 条

问题起初源于查看某游戏数据库时,发现密码字段存储使用的是0xmd5(username.password)这样的形式。

$GameSalt=$username.$password;
$GameSalt = md5($GameSalt);
$GameSalt = "0x".$GameSalt;

当我想使用hex反向转出原MD5的时候出现了问题。。。 转出的字符明显的多了N个字符。

经过查证发现,数据库原本使用的是utf8字符集,当修改成latin1字符集时,就正常转出原MD5值了。

如上图显示的,插入的16进制MD5字符串,在数据库中形成乱码文本,而使用默认的UTF8编码hex函数转回来时会出现不一致,将编码改为latin1再使用hex函数即可。

select name,passwd,hex(passwd),hex(convert( passwd using latin1)) from users order by id desc limit 2,1 ;

 

本文地址:https://www.sk15.net/archives/163.html
版权声明:本文为原创文章,版权归 sauren 所有,欢迎分享本文,转载请保留出处!
NEXT:已经是最新一篇了
高性能云服务器特惠
 相关文章  关键词:

发表评论


表情