【发布时间】:2023-02-16 00:25:42
【问题描述】:
我需要在 php/Laravel 中检查 asp 生成的密码。 你能帮我翻译一下用来生成这些密码的 asp 代码吗?
password = "xxx"
salt = "yyy"
saltedPassword = salt & password
Set objUnicode = CreateObject("System.Text.UnicodeEncoding")
arrByte = objUnicode.GetBytes_4(saltedPassword)
Set objSHA512 = Server.CreateObject("System.Security.Cryptography.SHA512Managed")
strHash = objSHA512.ComputeHash_2((arrByte))
'Ref: http://stackoverflow.com/questions/1118947/converting-binary-file-to-base64-string
Dim xml: Set xml = CreateObject("MSXML2.DOMDocument.3.0")
xml.LoadXml "<root />"
xml.documentElement.dataType = "bin.base64"
xml.documentElement.nodeTypedValue = strHash
ToBase64String = Replace(xml.documentElement.Text,VbLf, "")
Response.Write "<p>" & ToBase64String & "</p>"
我试过这个:
$password = 'xxx';
$salt = 'yyy';
$saltedpass = $salt.$password;
dd( base64_encode( hash('sha512', $saltedpass, true) ) );
但我得到不同的字符串。
【问题讨论】:
-
嗯...
ToBase64String = Replace(xml.documentElement.Text,VbLf, "")可能是不同之处。由于某种原因生成 base64 字符串后,换行符被替换。 -
谢谢回复,请问您建议怎么办?在哈希函数之后和 base64_encode 函数之前添加类似的替换?
标签: php laravel asp-classic base64 sha512