2013-11-20 16 views
3

我正在ASP.net/VB.net中创建一个PHP版本的登录脚本。存储用户名和密码的数据库位于MSSQL中,不会更改。密码存储为二进制数据。以下是VB.net中的一部分代码,它将密码与保存在数据库中的密码进行比较。我发现它是library的组成部分。ASP.net/VB.net的PHP版本登录

我在PHP sha1中对密码进行哈希处理后遇到问题。我不知道如何将散列字符串转换为可用于将其与数据库进行比较的二进制文件。

作为示例,MSSQL数据库中的密码“Test100”的值为(解包('H *',$ binaryPassword))7397001ce5259b79c436a369b9d3a8c7bc2a85385fdec57a。我不确定如何从散列密码获取上面的字符串,我正在使用PHP。

下面是我在PHP到目前为止,我所在的地方卡住。

$password = sha1(mb_convert_encoding($_POST['password'], 'utf-16le'), false); // $_POST['password'] = 'Test100' 

的输出是8415ec8cc9287a10f81db5a77341709d304bfa92。

所以我想还有一个步骤将$ password更改为$ binaryPassword或二进制密码的十六进制表示。

this page,它说Byte是一个8位无符号整数,但不确定如何从PHP字符串中获取它。

在此先感谢!

回答

0

如果您尝试在静态文本“Test100”上运行sh1,会发生什么情况?

+0

如果我运行sha1('Test100')或哈希('SHA1','Test100'),我得到753bf7a73775c66e54e13e63bbf6e5091855f527。 –