将VBA.NET函数转换为PHP

时间:2017-04-14 06:22:09

标签: 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.ToCharArray))
    Dim buffer() As Byte = objSHA1.Hash
    Dim HashValue As String = System.Convert.ToBase64String(buffer)
    Return HashValue
End Function

%>

我试过搜索手册并找到了一些指导。 到目前为止,我自己已经转换为PHP了:

function compute_hash($string){
    return base64_encode(sha1($string));
}

Hovewer它不会产生与VB的函数ComputeHash()相同的结果。 Coud没有人告诉我我做错了什么?

两种语言的执行示例:

VBA.NET

string = "orange45877687459999SENTRYORD01154321"

ComputeHash(string) // Returns = WbwSWEBzPqgo9C4nZmGwHhd/FBQ=

PHP

$string = "orange45877687459999SENTRYORD01154321";

compute_hash(string) // Returns = NTliYzEyNTg0MDczM2VhODI4ZjQyZTI3NjY2MWIwMWUxNzdmMTQxNA== (but I need "WbwSWEBzPqgo9C4nZmGwHhd/FBQ=")

1 个答案:

答案 0 :(得分:3)

您需要通过将TRUE参数传递给散列函数来指示PHP以字节而不是十六进制格式返回SHA1-hash:

function compute_hash($string){
    return base64_encode(sha1($string, TRUE));
}

PHP manual for SHA1