c#
  • php
  • vb.net
  • 2017-08-04 94 views 2 likes 
    2

    我需要轉換成C#下面的PHP代碼:轉換PHP HMAC SHA256到C#

    $hash = hash_hmac('SHA256',"ent",'key',true); 
    echo rtrim(strtr(base64_encode($hash), '+/', '-_'), '='); 
    

    我用下面的C#代碼:(FROM HERE

    private static string hmacSHA256(String data, String key) 
    { 
        using (HMACSHA256 hmac = new HMACSHA256(Encoding.ASCII.GetBytes(key))) { 
         byte[] a2 = hmac.ComputeHash(Encoding.ASCII.GetBytes(data)); 
         string a3 = Convert.ToBase64String(a2).ToString.Replace("+", "-").Replace("/", "_").Replace("=", ""); 
         return a3; 
        } 
    } 
    

    但結果是不相同。

    PHP結果:Xt0hGF_wcArzx4urxfbHUpOp2eEXvtGTDekGtQw5JTo

    C#結果:FnM4gpRRlapTZcO5iAIlEXEqU5iFT1hYcmQ1rY7ZINE

    +0

    您能告訴我們您是如何調用這些方法的嗎?即您傳遞給他們的數據是什麼? –

    +0

    爲什麼這麼多近距離投票呢?海事組織這是一個有效的問題,它比你在這裏找到的大多數新的用戶問題要好得多。他向我們展示了原始代碼和他嘗試的轉換,並向我們展示了預期的和收到的輸出。除了他如何調用這些方法之外,可能會丟失什麼? –

    回答

    1

    我只是測試了你的代碼和他們很好地工作。我通過了abcdefghsecretkey作爲參數,他們給出了相同的結果。

    如果您在詢問之前檢查了實際的輸入信息,那將會很不錯。

    C#代碼(fiddle):

    Console.WriteLine(hmacSHA256("abcdefgh", "secretkey")); 
    

    輸出:

    d2AI63oXm2Q5VDCCjLvBrwKr-gT6vZcizD6BCq1rRjc


    PHP代碼(make the fiddle yourself):

    <?php 
        $hash = hash_hmac('SHA256',"abcdefgh",'secretkey',true); 
        echo rtrim(strtr(base64_encode($hash), '+/', '-_'), '='); 
    ?> 
    

    輸出:

    d2AI63oXm2Q5VDCCjLvBrwKr-gT6vZcizD6BCq1rRjc


    您的問題在其他地方居住。

    相關問題