Claro, en mi ejemplo funciona sin binmode() porque yo uso un sistema operativo de verdad.
Muchas veces se me olvida que yo soy un afortunado por usar Linux, mientras que los demás se tropiezan con estas tonterías, en Windows.
Los finales de línea no son transformados porque no hace falta hacerlo.
Además, ahora que lo repaso, sí que lo pone en el manual de Digest:SHA1, en la función addfile(): hay que asegurarse, en la mayoría de las ocasiones, que el fichero esté puesto en modo binario.