The Zip Code Database project exists to provide US Zip Codes in their entirety; latitude and longitude coordinates included! See the home page for the distance calculation algorithm.
This is a Census Bureau file from the 2000 Census. It has junk ZIP codes in the format: 123XX where the Census used such codes for certain situations. I would recommend the free ZIP Code Database file found at GreatData which is a current file that includes all ZIPs.
Not a very comprehensive list as it only seems to contain one city per zip.