100求解决方案,都进来瞧瞧可能您也遇到过,可能您以后也会遇到.....
本人帮朋友做一个游戏私服的网站,做到注册这里发现一个问题:
游戏数据库是MySql,现有一张用户表Account,里面的password字段的数据类型是: varchar(16)
但是password字段现有数据都是存的用MD5加密之后的32位字符串,我用Java写了一个插入的方法
测试了一下经过32位加密之后保存会报错误:提示数据过长,不能插入.
但是这里有个游戏的官方网站是asp的,能执行插入.
求个位给个解决的方法.数据库是字段大小是不能改的.
谢谢您们了...
------解决方案--------------------游戏数据库是MySql,现有一张用户表Account,里面的password字段的数据类型是: varchar(16)
但是password字段现有数据都是存的用MD5加密之后的32位字符串,我用Java写了一个插入的方法
测试了一下经过32位加密之后保存会报错误:提示数据过长,不能插入.
只有修改数据库字段了啊
要不怎么办啊、?
或者你插入的密码不要超过16位
------解决方案--------------------把他的ASP代码拿过来看一下,看他用的是什么加密算法,如果看不到,就自己写一个加密算法,缩短数据的长度
------解决方案--------------------这个问题有点搞
1,你去看看asp的32长度的字符串插入之后是什么样子,如果是自动截取了前16个,那么你在java里面也截取一下就完了,然后验证的时候也用前16个,基本上这样做也不会有太大的问题
2,理论上你的32长度的字串是正好可以放入一个16字节长度的空间的,因为32长度的md5码每一个字符串只表示一个16进制数,而一个字节可以表示256种状态,正好是可以表示2个16进制数,所以正好可以用16个字节放32位16进制数,所以你要处理一下你的字符串,把每2个16进制的数放入一个字节中就可以了
------解决方案--------------------就是
在提交前想办法把它弄断就ok
------解决方案--------------------两个表,各存一半!