Вы задали много вопросов, так что, надеюсь, я могу попытаться ответить на каждый из них по очереди.
SHA-1 (и многие другие хэши, разработанные для криптографической защиты) основаны на многократном применении процедуры шифрования или дешифрования к блокам данных фиксированного размера. Следовательно, при вычислении хеш-значения длинной строки алгоритм занимает пропорционально больше времени, чем вычисление хеш-значения маленькой строки. Математически мы говорим, что при использовании SHA-1 время выполнения для хэширования строки длины N равно O (N). Следовательно, хеширование HTML-документа должно занять больше времени, чем хеширование строки «бла», но только пропорционально. Создание хеша займет совсем немного времени.
Что касается сравнения C ++, Java и PHP с точки зрения скорости, это опасная территория, и мой ответ, вероятно, будет взорван, но, вообще говоря, C ++ немного быстрее, чем Java, что немного быстрее чем PHP. Хорошая реализация хэша, написанная на одном из этих языков, может значительно превзойти другие, если они не написаны хорошо. Однако вам не нужно беспокоиться об этом. Обычно считается плохой идеей реализовывать ваши собственные хэш-функции, процедуры шифрования или процедуры дешифрования, поскольку они часто уязвимы для атак по побочному каналу , в которых злоумышленник может нарушить вашу безопасность, используя ошибки в реализации. которые часто чрезвычайно трудно предвидеть. Если вы хотите использовать хорошую хеш-функцию, используйте заранее написанную версию. Вероятно, это будет быстрее, безопаснее и менее подвержено ошибкам, чем все, что вы делаете вручную.
Наконец, я бы предложил вообще не использовать SHA-1. SHA-1 имеет известные криптографические недостатки, и вам следует рассмотреть возможность использования вместо этого алгоритма сильного хеширования, такого как SHA-256.
Надеюсь, это поможет!