Возможно, вы не делаете ничего плохого. Хэш-функции имеют лавинный эффект , в котором любой другой бит на входе сильно меняет выходной хэш. Если исходный пример сайта использовал другую кодировку или имел другой порядок для элементов JSON, или даже имел больше или меньше вкладок, пробелов, разрывов строк или любых других «мусорных» символов, вам будет трудно найти подходящее сообщение для хеша, показанного на сайте.
Обычно криптографические решения используют канонизацию, чтобы избежать такого рода проблем (различные значения хеш-функции для семантически равных сообщений). Однако в спецификации JWT не указан тип канонизации для JSON.
Короче говоря, я думаю, тебе не нужно об этом беспокоиться. Ваша реализация JWT будет правильной, если вы используете допустимую (правильно реализованную) хеш-функцию.
Кроме того, я заметил, что спецификация JWT не определяет поле «Дайджест» для полезной нагрузки JWT. Таким образом, вам может даже не понадобиться использовать это поле. Если только CyberSource REST API не сделает его обязательным.