Я не думаю, что эталонный тест здесь полезен, потому что две вещи, которые вы сравниваете, созданы для разных вариантов использования.HMAC разработан для ситуаций, в которых у вас есть общий секрет, который вы можете использовать для аутентификации сообщения, тогда как подписи предназначены для ситуаций, когда у вас нет общего секрета, но вы хотите, чтобы кто-либо с вашим открытым ключом мог проверитьВаша подпись.Есть очень немного ситуаций, в которых любой из примитивов был бы одинаково уместным, и когда он есть, вероятно, есть явный фаворит в плане безопасности, а не из соображений производительности.
Довольно просто продемонстрировать, что HMAC работаетоднако, чтобы быть более быстрым: для подписания сообщения сначала необходимо его хэшировать, затем вычислять сигнатуру по хешу, в то время как вычисление HMAC требует сначала его хеширования, а затем вычислять HMAC (который представляет собой всего лишь два дополнительных одноблочных вычисления хеша).По той же причине, однако, для любого разумного предположения относительно длины сообщения и скорости ваших криптографических примитивов, разница в скорости будет пренебрежимо мала, так как большая часть затрат распределяется между обеими операциями.
Короче говоря, вы не должны выбирать структуру своей криптосистемы, основываясь на незначительных различиях в производительности.