You can buy zipcode data pretty cheap (around $250 for a liscense) that contains the Latitude and Longitude of the center of each US Zip. Most of the companies that sell this, provide the formulas to calculate distance between two zip codes using this info.
I used it for a project before but I don't have the name of the company handy. I'll look for it and post it if I find the company.
. They provide several ways of calculating distance with various degrees of precision.