- sha1 (var1 + sha1 (var2))
- sha1 (var1 + var2)
Ни один не очень безопасен. Не изобретай велосипед. HMAC был разработан для этого; в частности, требуются шаги (заполнение и т. д.), чтобы избежать проблем с определенными недостатками в некоторых алгоритмах хеширования, плохо взаимодействующих с вышеуказанными «простыми» реализациями.
Кроме того, двойное хеширование не полезно для повышения безопасности. Обратите внимание: в лучшем случае вы будете отображать одно случайное значение в другое. Однако, если происходит коллизия, два результирующих значения из второго хеша равны, вы потеряли безопасность, закончив коллизию. То есть вы никогда не сможете избавиться от столкновения таким образом, но вы можете получить его.
Тем не менее, существующие атаки прообразов могут не работать против двойного хеширования ... но! Они все еще могут работать. Я не квалифицирован, чтобы сказать, что, и если вы спрашиваете это здесь, вы, вероятно, тоже. Конечно, атаки коллизий, которые сегодня являются практичными для MD5, не защищены от двойного хеширования.
Лучше придерживаться проверенных алгоритмов, которые выдержали десятилетия анализа, потому что с помощью криптографии слишком просто сделать что-то, что выглядит безопасным, но не безопасным.