将VBA.NET函数转换为PHP时遇到问题
下面有一个用VBA.NET编写的函数,我正在尝试将其转换为PHP。我主要是一名PHP开发人员,我对VB也几乎一无所知将VBA.NET函数转换为PHP时遇到问题,php,vb.net,Php,Vb.net,下面有一个用VBA.NET编写的函数,我正在尝试将其转换为PHP。我主要是一名PHP开发人员,我对VB也几乎一无所知 <% Public Shared Function ComputeHash(ByVal Key As String) As String Dim objSHA1 As New SHA1CryptoServiceProvider objSHA1.ComputeHash(System.Text.Encoding.UTF8.GetBytes(Key.To
<%
Public Shared Function ComputeHash(ByVal Key As String) As String
Dim objSHA1 As New SHA1CryptoServiceProvider
objSHA1.ComputeHash(System.Text.Encoding.UTF8.GetBytes(Key.ToCharArray))
Dim buffer() As Byte = objSHA1.Hash
Dim HashValue As String = System.Convert.ToBase64String(buffer)
Return HashValue
End Function
%>
但是,它不会产生与VB函数ComputeHash()
相同的结果。难道没人知道我做错了什么吗
在两种语言上执行的示例:
VBA.NET
string = "orange45877687459999SENTRYORD01154321"
ComputeHash(string) // Returns = WbwSWEBzPqgo9C4nZmGwHhd/FBQ=
PHP
您需要指示PHP通过将TRUE参数传递给哈希函数,以字节而不是十六进制格式返回SHA1哈希:
function compute_hash($string){
return base64_encode(sha1($string, TRUE));
}
您的目标是什么??你想在@MASIDDIQUI中返回sha1的散列吗?不,事实上并没有那么简单。不仅仅是散列本身。我在PHPC中寻找
ComputeHash()
的精确等式您可以发布一些您收到的示例输入和输出吗?不要忘记函数中的utf8编码?返回base64_编码(utf8_编码(sha1($string))@HankyPanky添加了两种语言的输出哈希示例
$string = "orange45877687459999SENTRYORD01154321";
compute_hash(string) // Returns = NTliYzEyNTg0MDczM2VhODI4ZjQyZTI3NjY2MWIwMWUxNzdmMTQxNA== (but I need "WbwSWEBzPqgo9C4nZmGwHhd/FBQ=")
function compute_hash($string){
return base64_encode(sha1($string, TRUE));
}