2016-01-12 120 views
-3

我想寫一個生成簽名到PHP的示例代碼,該示例是在Java中,但我做錯了什麼。誰能幫我?翻譯Java代碼爲PHP代碼

的樣品是:

String userId; 
String applicationKey; // E.g. "196087a1-e815-4bc4-8984-60d8d8a43f1d"; 
String applicationSecret; // E.g. "oYdgGRXoxEuJhGDY2KQ/HQ=="; 
long sequence; // fetch and increment last used sequence 
String toSign = userId + applicationKey + sequence + applicationSecret; 
MessageDigest messageDigest = MessageDigest.getInstance("SHA-1"); 
byte[] hash = messageDigest.digest(toSign.getBytes("UTF-8")); 
String signature = Base64.encodeBase64String(hash).trim(); 

我的代碼是:

$userId="User"; 
$applicationKey="MyappKey"; 
$applicationSecret="MySecretKey"; 
$sequence=1; 
$stringToSign=$userId.$applicationKey.$sequence.$applicationSecret; 
$hash = sha1($stringToSign,true); 
$signature = trim(base64_encode($hash)); 

是Java

MessageDigest messageDigest = MessageDigest.getInstance("SHA-1"); 
byte[] hash = messageDigest.digest(toSign.getBytes("UTF-8")); 

在PHP中,同樣的

$hash1 = sha1($stringToSign,true); 

和Java Base64.encodeBase64String(hash).trim();在php中是一樣的trim(base64_encode($hash));

問題是當我執行java代碼並且得到的輸出與php代碼不一樣的時候。

+0

您應該更新您的Java代碼,使同樣的任務爲你的PHP代碼;正如StefanBeike指出的那樣,由於未初始化的變量,您的Java代碼無效。 –

+0

「尋求調試幫助的問題(」爲什麼不是這個代碼工作?「)必須包含所需的行爲,特定的問題或錯誤以及在問題本身中重現問題所需的最短代碼。」 「我做錯了什麼」不是一個具體問題。 –

+0

謝謝你的意見,但我想用PHP編寫java代碼給我。它是在https://www.sinch.com/docs/voice/android/#authenticationbyclientaccesstoapplicationsecret如果Java代碼是錯誤的對我來說是新的,因爲我希望它在PHP中,我不知道太多關於Java。這就是爲什麼我在這裏問。 – Roke

回答

0

嘗試

$signature = trim(base64_encode(**$hash**)); 
+0

謝謝庫爾特,但錯誤複製代碼,這車道在我的代碼是好的:( – Roke