Hola,
Lo de el htpasswd solo es necesario si harias la autentificacion HTTP via el fichero htaccess de apache. Pero tu lo quieres hacer por HTTP via PHP. Por lo cual "no" es necesario encriptarlo. Pero lo que si tendrias que hacer es proteger el fichero passwords.txt, por que tal como lo pones en el codigo el fichero esta en el mismo directorio que el script PHP, por ejemplo en la URL
http://dominio.com/secreto/ . ¿Que pasa si pones en el navegador
http://dominio.com/secreto/passwords.txt ? Pues que se lee todo el fichero. Una forma de "protegerlo" el guardandolo en una carpeta que no sea accesible via URL. Por ejemplo, si la carpeta raiz de tu sitio es c:/pub/www/ , podrias guardar el fichero en c:/password/passwords.txt . Asi solo podran acceder al fichero si consigen tener acceso al sistema de fichero. Y si no necesitas tener acceso al texto "real" de la clave, podrias guardarla encriptada con la funcion
md5() y luego comparar ese valor guardado con el valor encriptado de PHP_AUTH_PW.
Suerte.