Yes, the web URL does not have to match the actual location of the file. The easiest way to implement this in .NET is to create an IHttpHandler that uses a Response.TransmitFile based on a hash value.
URL- : www.mysite.domain/file.ashx? hash = hashvalue1.
URL-, Routing (ASP.NET 3.5 SP1) - URL-.