如何在PHP中获取此Java SHA1结果?
// Generating the Signature - Java
// import java.security.MessageDigest;
// import org.apache.commons.codec.binary.Base64;
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();
我需要UTF-8 Sha1在PHP上,谢谢
这些代码输出的结果与java utf-8 sha-1不同:
1:
$toSign_base64 = trim(base64_encode($toSign));
$toSign_digest = trim(hash_hmac('sha1', base64_decode($toSign_base64), "", true));
$signature = trim(base64_encode($toSign_digest));
2:
$signature = trim(sha1($toSign));
3:
$signature = trim(base64_encode(sha1($toSign)));
结果:
"raw": "849165ca-7af7-4951-6969-e19fc9f50b66",
"java_utf8_sha1": "1kBtMaSGLLiUfoSh9qJaxQGZTiQ=",
"code_1": "07PGV/+gMgCylXyA2qPJ92y1eSo=",
"code_2": "d6406d31a4862cb8947e84a1f6a25ac501994e24",
"code_3": "ZDY0MDZkMzFhNDg2MmNiODk0N2U4NGExZjZhMjVhYzUwMTk5NGUyNA=="
答案 0 :(得分:2)
我90%肯定php函数sha1();使用utf8编码, 输出为raw,然后base64_encode它,所以
<?php base64_encode( sha1("849165ca-7af7-4951-6969-e19fc9f50b66", true) ); ?>
并查看它是否与java相同(我不知道java,只有php)