2017-04-14 27 views
0

在VBA.NET中我嘗試將其轉換爲PHP。我主要是一名PHP開發人員,在VB中我幾乎沒有什麼知識。在將VBA.NET函數轉換爲PHP時出現問題

<% 

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()。有人告訴我做錯了什麼?執行對兩種語言的

例子:

VBA.NET

string = "orange45877687459999SENTRYORD01154321" 

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

PHP

$string = "orange45877687459999SENTRYORD01154321"; 

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

你的目標是什麼?你想在sha1中返回一個散列? –

+0

@MASIDDIQUI不,實際上並不那麼簡單。不只是哈希本身。我正在尋找在PHP中使用'ComputeHash()'的確切平等點 – Yang

+0

您能發佈一些您接收到的示例輸入和輸出嗎? –

回答

2

您需要指示PHP以字節爲單位,而不是在十六進制返回SHA1哈希格式,通過將TRUE參數傳遞給哈希函數:

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

PHP manual for SHA1

相關問題