我想跟隨用PHP編寫的API的教程的一部分。它們顯示出以下例子:NodeJS HMAC哈希創建
$public = 'JkAFq7M47kLN0xVD';
$private = 'E6X9FyZvMFeJbqtq.IwjlTuR.MKDoicB';
$url = 'https://pterodactyl.local/api/admin/users';
$body = '';
$hmac = hash_hmac('sha256', $url . $body, $private, true);
return $public . '.' . base64_encode($hmac);
// Should return the string below:
//
// JkAFq7M47kLN0xVD.wgIxj+V8RHgIetcQg2lRM0PRSH/y5M21cPz9zVhfFaQ=
但我的方法不返回正確的值。相反,它返回如下:
JkAFq7M47kLN0xVD./RKZS3U2FKfEt7/tEks4vWwyS+89lL+k8aEGO8NJWuo=
這裏是我的代碼:
hmac = crypto.createHmac('sha256', private_key);
hmac.write(url+body);
hmac.end();
hash = hmac.read().toString('base64');
console.log(hash);
編輯:我認爲,他們所提供的例子是無效的,因爲大家都在說我的代碼幾乎是相同的,PHP代碼輸出一個不同的值,然後它說它應該在文檔中。
*「應該返回下面的字符串」* - 嗯,它不。你的PHP代碼和你的node.js代碼目前是相同的。也許你應該檢查你的PHP代碼是否確實在運行你的想法。 –
這不是公鑰密碼的工作原理。 HMAC是一個對稱組件。 –
@ ArtjomB.how這不是公鑰密碼的工作原理嗎? –