如果字节表示小于 0x10,则从 md5() PHP 中删除 0
在 PHP 中使用 md5() 函数直接给出字符串。在将字符串保存到数据库之前,我想要做的是删除零 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();
PHP 方面的任何帮助都将非常有帮助,以免发生不匹配。我无法更改应用程序代码,因为这会给现有用户带来问题。
谢谢。
Using md5() function in PHP directly gives me the String. What I want to do before saving the string in the database is remove zeroes 0 if any in the byte representation of that hex and that byte representation is < 0x10 and then save the string in the database.
How can I do this in PHP?
MD5 - PHP - Raw Value - catch12 - 214423105677f2375487b4c6880c12ae - This is what I get now. Below is the value that I want the PHP to save in the database.
MD5 - Raw Value - catch12 - 214423105677f2375487b4c688c12ae
Wondering why? The MD5 code I have in my Android App for Login and Signup I did not append zeroes for the condition if ((b & 0xFF) < 0x10) hex.append("0");
Works fine. But the Forgot Password functionality in the site is PHP which is when the mismatch happens if the user resets password. JAVA code below.
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();
Any help on the PHP side so that the mismatch does not happen would be very very helpful. I can't change the App code because that would create problems for existing users.
Thank you.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
将“正常”MD5 哈希值传递给此函数。它将把它解析成单独的字节对并去掉前导零。
编辑:修复了拼写错误
或者,如果您不希望完全剥离零字节(如果您希望 0x00 为“0”),请使用此版本:
Pass the "normal" MD5 hash to this function. It will parse it into the individual byte pairs and strip leading zeros.
EDIT: Fixed a typo
Alternatively, if you don't want zero-bytes completely stripped (if you want 0x00 to be '0'), use this version:
去除前导零(00->0、0a->a、10->10)
去除前导零和零字节(00->无、0a->a、10->10)
To strip leading zeros (00->0, 0a->a, 10->10)
To strip leading zeros & zero bytes (00->nothing, 0a->a, 10->10)