在PHP中使用md5()函数直接给我String.在将数据库保存到数据库之前,我想要做的是删除0(如果该十六进制的字节表示中的任何一个,并且该字节表示为<0x10),然后将该字符串保存在数据库中.
我怎么能用PHP做到这一点?
MD5 - PHP - 原始值 - catch12 - 214423105677f2375487b4c6880c12ae - 这就是我现在得到的.下面是我希望PHP在数据库中保存的值.
MD5 - 原始值 - catch12 - 214423105677f2375487b4c688c12ae
想知道为什么?我的Android应用程序中的MD5代码用于登录和注册我没有附加零条件if ((b & 0xFF) < 0x10) hex.append("0");工作正常.但在该网站的忘记密码功能是PHP这是当如果用户重置密码不匹配的情况.JAVA代码如下.
byte raw[] = md.digest();
StringBuffer hexString = new StringBuffer();
for (int i=0; i<raw.length; i++)
hexString.append(Integer.toHexString(0xFF & raw[i]));
v_password = hexString.toString();
Run Code Online (Sandbox Code Playgroud)
PHP方面的任何帮助以便不会发生不匹配将非常有帮助.我无法更改应用程序代码,因为这会给现有用户带来问题.
谢谢.
将“正常”MD5 哈希值传递给此函数。它将把它解析成单独的字节对并去掉前导零。
编辑:修正了一个错字
function convertMD5($md5)
{
$bytearr = str_split($md5, 2);
$ret = '';
foreach ($bytearr as $byte)
$ret .= ($byte[0] == '0') ? str_replace('0', '', $byte) : $byte;
return $ret;
}
Run Code Online (Sandbox Code Playgroud)
或者,如果您不希望完全删除零字节(如果您希望 0x00 为“0”),请使用此版本:
function convertMD5($md5)
{
$bytearr = str_split($md5, 2);
$ret = '';
foreach ($bytearr as $byte)
$ret .= ($byte[0] == '0') ? $byte[1] : $byte;
return $ret;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
744 次 |
| 最近记录: |