Нужно руководство по созданию контрольных сумм в Perl - PullRequest
1 голос
/ 18 февраля 2011

Мне нужно создать контрольную сумму для группы данных в Perl, и я наткнулся на этот модуль Digest :: MD5.Похоже, что это будет соответствовать всем требованиям, но я подумал, что я хотел бы спросить здесь, чтобы узнать, есть ли у кого-нибудь какие-либо советы или, возможно, знает о том, какой модуль лучше использовать или, возможно, более подходящий алгоритм дайджеста.Хэшируется примерно 10 таблиц данных (по одному логическому кортежу за раз).Это будет первый раз, когда я использую контрольные суммы, поэтому любые советы, хитрости и хитрости будут очень полезны.

Редактировать: Насколько я знаю, в Digest: MD5 нет ничего плохого, но яникогда не использовал его, и я не знаком с алгоритмами хеширования.Я надеялся, что кто-то со стажем сможет сказать мне, был ли я на правильном пути или нет.Просто хотел немного подтверждения, прежде чем зайти слишком далеко.

1 Ответ

9 голосов
/ 18 февраля 2011

Да, Дайджест :: MD5 поможет; он написан Жизлом Аасом (автором LWP среди других отличных пакетов) и имеет хороших отзывов и оценок на cpanratings , оба из которых должны вас заверить, что это хороший выбор.

Использовать его можно так же просто, как:

my $checksum =  Digest::MD5::md5_hex($data);

Если вы считаете, что вы можете изменить выбранный алгоритм дайджеста в будущем (например, вместо этого использовать SHA-1), вы можете рассмотреть возможность использования Дайджест вместо этого - также написанного Gisle Aas, и предоставляя простой интерфейс для различных дайджест-модулей.

Например:

my $digest = Digest->new('MD5');
$digest->add($data);             # to add data from a scalar, or:
$digest->add_file($filehandle);  # to add data read from a filehandle
my $checksum = $digest->hexdigest;  # or just ->digest for binary

Этот подход имеет то преимущество, что вы можете просто изменить "MD5" на, например. "SHA-1", и все готово.

Просто для полноты, я добавлю, почему вы можете захотеть разработать с возможностью легко использовать другие алгоритмы хеширования - если это использовалось в каких-либо целях безопасности, MD5 оказалась уязвимой для коллизий хешей - Департамент США Министерства национальной безопасности рекомендует, чтобы MD5 "считался криптографически взломанным и непригодным для дальнейшего использования" . Тем не менее, для общей проверки целостности данных это все еще приемлемый выбор для многих и широко поддерживается.

SHA-1 также считается слабым; SHA-2 считается лучшим выбором для безопасного хеширования в криптографических целях.

...