что за гибрид
sha1($fp, 'windows-1251', 'UTF-8') ?
по мануалу должно быть
string sha1 ( string $str [, bool $raw_output = false ] )
ну и file_get_contents берет весь файл, а не только одну строку. Т.е. там может быть в конце перевод строки или еще что-нибудь.