ASP.net/VB.net登录的PHP版本

ASP.net/VB.net登录的PHP版本,php,asp.net,sql-server,vb.net,sha1,Php,Asp.net,Sql Server,Vb.net,Sha1,我正在ASP.net/VB.net中创建登录脚本的PHP版本。存储用户名和密码的数据库位于MSSQL中,不会更改。密码存储为二进制数据。下面是VB.net中的一部分代码,它将密码与保存在数据库中的密码进行比较 Dim sha1 As sha1 = sha1.Create() Dim password As Byte() = sha1.ComputeHash(Encoding.Unicode.GetBytes(Me.txtPwd.Text)) CustData = .GetCustomerByEm

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

Dim sha1 As sha1 = sha1.Create()
Dim password As Byte() = sha1.ComputeHash(Encoding.Unicode.GetBytes(Me.txtPwd.Text))
CustData = .GetCustomerByEmail(Me.txtUser.Text, password)
我发现这是一场战争的一部分

在PHP的sha1中对密码进行哈希运算后,我遇到了一些问题。我不知道如何将散列字符串转换成二进制,以便与数据库进行比较

Dim sha1 As sha1 = sha1.Create()
Dim password As Byte() = sha1.ComputeHash(Encoding.Unicode.GetBytes(Me.txtPwd.Text))
CustData = .GetCustomerByEmail(Me.txtUser.Text, password)
例如,MSSQL数据库中的密码“Test100”的值为(解包后('H*',$binaryPassword))7397001ce5259b79c436a369b9d3a8c7bc2a85385fdec57a。我不知道如何从使用PHP获得的哈希密码中获取上面的字符串

以下是我目前在PHP中所做的工作,以及我所陷入的困境

$password = sha1(mb_convert_encoding($_POST['password'], 'utf-16le'), false); // $_POST['password'] = 'Test100'
其输出为8415ec8cc9287a10f81db5a77341709d304bfa92

因此,我认为还有一个步骤可以将$password更改为$binaryPassword或二进制密码的十六进制表示形式

从中可以看出,字节是一个8位无符号整数,但不确定如何从PHP字符串中获取它


提前谢谢

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

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