Obtaining up-to-date list of US ZIP Codes with Latitude and Longitude Geocodes?
ZIP codes are a habitually abused geography. It's understandable that people want to use them because they are so visible and well-known but they aren't well suited to any use outside the USPS. ZIP codes aren't associated with polygons, they are associated with carrier routes and the USPS doesn't like to share those. Some ZIP codes are points e.g. a ZIP code may be associated with a post office, a university or a large corporate complex. They are used to deliver mail.
The Census Bureau creates ZIP Code Tabulation Areas (ZCTA) based on their address database. If it's appropriate to your work you could try taking the centroid of the ZCTAs. ZCTA Geography from the 2010 Census is available on the Census Bureau website.
See also: ZIP Code Geography and Mapping
Try this: http://download.geonames.org/export/zip/
It is licensed under a Creative Commons Attribution 3.0 License. They even have zip codes of various other countries around the world.
One thing not mentioned, but very important, is that the Census data is not a complete list of all ZIP Codes (ZCTAs). It is a list of ZCTAs that have a population, so PO Boxes, etc. are not in the data. There are about 42,000 ZIP Codes and about 33,000 ZCTAs.
For a complete file and true accuracy, you'll want to get a commercial product such as what Puddleglum mentioned.
One last thing not mentioned: all coordinates are not created equal! We've seen some very popular databases off by over 20 miles in the congested Northeast! Ask vendors to give you a sample of data in your area (not their standard demo file) and use a free product such as ArcGIS Explorer to verify (you can download a ZIP Code boundaries layer from their web server, ArcGIS Online, for free!)