2017-04-14 9 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

あなたはバイト単位ではなく、六角にSHA1ハッシュを返すためにPHPを指示する必要がありTRUEパラメータをハッシング関数に渡すことにより、次のようになります。

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

PHP manual for SHA1

関連する問題