我試圖將PHP後端與Java後端集成。 Java後端需要一些必須正確編碼和哈希以在兩端匹配的憑證。HMAC一個php字節數組
java系統將字符串轉換爲字節序列(1),然後生成該序列(2)的HMAC/SHA256密鑰散列,然後基數64對散列(3)進行編碼。
private static final String HMAC_ALGORITHM = "HmacSHA256";
final SecretKey key = new SecretKeySpec('mysecret', HMAC_ALGORITHM);
final Mac hmac = Mac.getInstance(key.getAlgorithm());
hmac.init(key);
final String stringToHash = "blablabla";
final byte[] bytesToHash = stringToHash.getBytes("UTF8");
final byte[] hash = hmac.doFinal(bytesToHash);
return Base64.encodeBytes(hash);
我可以做的(1),用PHP中的字符串轉換爲字節序列
$stringArray = unpack('C*', $string);
//其工作,並在這一點上是完全一樣的Java系統
但是第二部分(2)似乎不匹配,有沒有辦法將一個字節數組傳遞給PHP中的hmac,因爲在Java中,HMAC方法接受一個字節數組,而PHP的方法期望一個字符串,例如
hash_hmac('sha256', $stringArray, $secret);
或者我需要循環訪問數組並做一些魔術?
謝謝!
添加你的Java和PHP代碼 – Josnidhin
薩姆嗨,面臨着同樣的問題。你找到解決方案嗎? – dirtyhandsphp