MD5 был криптографически взломан довольно давно. Это в основном означает, что некоторые свойства, обычно гарантируемые хеш-алгоритмами, больше не выполняются. Например, можно найти коллизии хешей за гораздо меньшее время, чем потенциально необходимо для длины вывода.
SHA-512 (одна из хеш-функций семейства SHA-2) на данный момент достаточно безопасна, но, возможно, не намного дольше в обозримом будущем. Вот почему NIST начал конкурс на SHA-3.
Как правило, вы хотите, чтобы алгоритмы хеширования были односторонними функциями. Они сопоставляют некоторый вход с некоторым выходом. Обычно выходные данные имеют фиксированную длину, что обеспечивает «дайджест» исходного ввода. Общие свойства, например, заключаются в том, что небольшие изменения во входных данных приводят к большим изменениям в выходных данных (что помогает обнаруживать несанкционированное вмешательство) и что функция не является легко обратимой. Для последнего свойства длина вывода очень помогает, потому что она обеспечивает теоретическую верхнюю границу сложности атаки столкновения. Однако недостатки в дизайне или реализации часто приводят к снижению сложности атак. Как только они станут известны, пришло время оценить, по-прежнему ли используется хеш-функция. Если сложность атаки падает достаточно далеко, практические атаки легко попадают в круг людей без специального компьютерного оборудования.
Примечание: я говорил только об одном виде атаки здесь. Реальность хоть и гораздо более нюансированная, но и гораздо сложнее понять. Поскольку хэш-функции очень часто используются для проверки целостности файла / сообщения, коллизия, вероятно, самая простая для понимания и отслеживания.
Самый простой и лучший способ компилировать в Windows - использовать visual studio expres s. Это бесплатно. Хорошая причина для использования cygwin - кроссплатформенные сборки. Хорошая причина использовать gcc - это поддержка некоторых конфет компилятора, которых нет в компиляторе Microsoft.
Но в целом VC ++ Express - это способ разработки только для Windows.
Всегда есть возможность использовать -mno-cygwin
с Cygwin для компиляции с библиотеками Windows, такими как MinGW:
gcc -mno-cygwin file.c -o test
Это непростой выбор и в основном зависит от насколько вы будете полагаться на другие библиотеки. Cygwin действительно добавляет дополнительный уровень, который тяжелее, но "эмулирует" среду Linux лучше, чем MinGW.
Изменить:
Qt Creator позволяет вам компилировать с MinGW в Windows (и gcc в Linux, ...), имеет IDE, которая делает отладку более удобной, чем gdb. Если вам нужны библиотеки, у вас все еще есть возможность использовать библиотеки Qt. Это было бы хорошей альтернативой Visual Studio, если вы действительно хотите придерживаться gcc для будущей переносимости.
Вы можете посмотреть CodeBlocks . Обычно он используется для создания приложений WxWidgets, но он прекрасно дополняет MinGW.
На самом деле, есть вариант №3: если ваша версия Windows позволяет это, вы можете установить Microsoft Services для Unix / Подсистему для Unix-приложений , а затем получить gcc из SUACommunity . Также есть менеджер пакетов. Из этих 3 вариантов это даст вам поведение, наиболее близкое к истинной системе Unix.
Однако результирующие приложения не являются приложениями Win32; это приложения SUA, и для их работы потребуется SUA. Если вы пишете код для себя, это обычно не проблема, если вы пишете код для себя, но если вы хотите писать и распространять правильное приложение Windows, я бы посоветовал держаться подальше от всего, что пытается подражать Unix, так что MinGW это так.
это даст вам поведение, наиболее близкое к истинной системе Unix.Однако полученные приложения не являются приложениями Win32; это приложения SUA, и для их работы потребуется SUA. Если вы пишете код для себя, это обычно не проблема, если вы пишете код для себя, но если вы хотите писать и распространять правильное приложение Windows, я бы посоветовал держаться подальше от всего, что пытается подражать Unix, так что MinGW это так.
это даст вам поведение, наиболее близкое к истинной системе Unix.Однако полученные приложения не являются приложениями Win32; это приложения SUA, и для их работы потребуется SUA. Если вы пишете код для себя, это обычно не проблема, если вы пишете код для себя, но если вы хотите писать и распространять правильное приложение Windows, я бы посоветовал держаться подальше от всего, что пытается подражать Unix, так что MinGW это так.
Qt Creator стандартно поставляется с MinGW и может использоваться для создания проектов, которые фактически не используют фреймворк Qt.
На Equation.com есть простой в установке GCC, заключенный в оболочку MinGW. Щелкните «Инструменты программирования», затем «Фортран, C, C ++», загрузите нужный выпуск, установите и используйте.
Я думаю, что ответ зависит от того, собираетесь ли вы использовать библиотеки или компилировать программы, ориентированные на POSIX или целевые объекты на основе POSIX. Для этого предназначен Cygwin, тогда как MinGW больше предназначен для компиляции программ, ориентированных на Windows, с использованием GCC.
Один из возможных методов - использовать CMake , который может построить проект Visual Studio из ваших источников, а затем скомпилировать из Visual Studio. Он также может создавать проекты для других IDE, поэтому вы можете использовать кроссплатформенность.
Другой вариант - TDM MinGW: http://www.tdragon.net/recentgcc/
Это в основном неофициальный форк MinGW с последний компилятор GCC, доступный как для 32-, так и для 64-битных машин Windows. Его используют даже сами разработчики MinGW.
Уравнение Gcc еще лучше: http://www.equation.com/servlet/equation.cmd?fa=fortran