Вы сказали, что данные будут содержать около миллиона строк / файлов по 1 КБ, и вы хотите проверять их каждые несколько дней. Если это так, вам действительно не нужно беспокоиться о производительности, поскольку обработка 1 ГБ данных не займет много времени, не имеет значения, используете ли вы crc32 или md5.
Я предлагаю использовать md5, потому что он менее вероятен, чем crc32. Crc32 справится с этой задачей, но вы можете получить лучший результат, не вкладывая гораздо больше средств.
Edit:
Как сказал кто-то другой, сравнение строк с резервной копией происходит быстрее. (Потому что вы можете прервать работу, как только два символа будут различаться). Это не на 100% верно, если вам нужно прочитать строку из файла. Если мы предположим, что строки получены из файлов, и вы используете md5, вам придется прочитать 32 байта плюс среднее значение длины строки для каждой строки, которую вы хотите сравнить. Когда вы сравниваете байт за байтом, вам нужно прочитать как минимум 2 байта, а за максимальное время буксировки длину строки. Поэтому, если у многих ваших строк одинаковое начало (больше символов, чем 32 + среднее значение длины строк равно), вы будете быстрее с хэшем. (Поправьте меня, если я ошибаюсь). Так как это теоретический случай, вам будет хорошо придерживаться сравнения по типу. Если среднее значение длины строки превышает 32 байта, при использовании хеша вы сэкономите место на диске; -).
Но, как я уже говорил выше; производительность не будет вашей проблемой при работе с этим количеством данных.