How much time is IO taking, and how much time is the digest taking? You should time the IO sepeartely and see how long just IO takes. I am not that familiar with IO in java, however you should make sure your IO is buffered, and also ensure that you are using the fastest IO classes available.
Also, not sure what you are doing with this message digest when you are done. If you simply want to compare it to other files you receive, there may be faster tests you can do on the input files and only if these fail calculate the message digest (i.e. for example do the number of bytes, or how rows match the original?)
Yes, try wrapping your FileInputStream in a BufferedInputStream.
The soul is dyed the color of its thoughts. Think only on those things that are in line with your principles and can bear the light of day. The content of your character is your choice. Day by day, what you do is who you become. Your integrity is your destiny - it is the light that guides your way. - Heraclitus
So I tried reading a 500Mb file. And adding a simple BufferedInputStream with 16Kb brings down the response time by 1/3.
Did you try it just reading 16k at a time from an InputStream? My guess is it would be pretty close. As Peter suggested before, the performance improvement is from the size of the buffer, because all BufferedInputStream does is duplicate the effort of reading a chunk at a time.