我已經花了近6小時實現郵件簽名算法。它不會在所有的工作:OpenSSL的HMAC-SHA1摘要不匹配加密的
這是PHP代碼,並生成摘要:
$payload = "thisisanapple";
$signature = hash_hmac("sha1", $payload, "thisisarandomkey");
$data = base64_encode($signature);
// YzExZWRmZDliMjQzNTZjNzhlNmE3ZTdmMDE3ODJjNmMxMmM4ZTllMQ==
這是JS Node.js的服務器做同樣的事情上運行:
var hmac = crypto.createHmac('sha1', "thisisarandomkey");
hmac.update("thisisanapple");
var signature = hmac.digest('base64');
// wR7f2bJDVseOan5/AXgsbBLI6eE=
我不知道這裏有什麼問題..我有嘗試SHA256,但他們仍然是不同的。我還使用了由OpenSSL生成的私鑰,無論是明文還是base64,仍然是相同的結果(不同的密鑰)。
你知道什麼是JS代碼相匹配原始問題中的PHP行爲? – karellm