я тестирую приложение Paw, оно потрясающее. Разработчик проделал выдающуюся работу, кажется, он действительно любит свое приложение.
Я обнаружил, что функция HMAC Sha256 Crypto не возвращает ожидаемый хеш, когда ввод включает символ обратной косой черты или комбинации, в которых он используется «\n» (без кавычек).
Пример:
ввод: GET\n/test/api
ключ: BE8B3551-1892-4544-9FDC-EC0B2C8608F8
Результат: f9VF6Sy0oq645lKRcXF3N96aPZLy8qhwrbJconOJhEI=
Ожидается: VciY9BUCzL3KUUvFtmcRSuP2N5IkQ2gLvjjYgd3T9Uc=
Я генерирую правильный хэш для тестируемого API, используя следующий код javascript, основанный на скрипте CryptoJS:
<script src="http://crypto-js.googlecode.com/svn/tags/3.0.2/build/rollups/hmac-sha256.js"></script>
<script src="http://crypto-js.googlecode.com/svn/tags/3.0.2/build/components/enc-base64-min.js"></script>
<script>
var message = 'GET\n/test/api';
var key = 'BE8B3551-1892-4544-9FDC-EC0B2C8608F8';
var hash = CryptoJS.HmacSHA256(message, key);
var hashInBase64 = CryptoJS.enc.Base64.stringify(hash);
document.write(hashInBase64);
</script>
<script src="http://crypto-js.googlecode.com/svn/tags/3.0.2/build/components/enc-base64-min.js"></script>
<script src="http://crypto-js.googlecode.com/svn/tags/3.0.2/build/rollups/hmac-sha256.js" ></script>