There is too much going on with this class. If it is, as its name suggests, a file repository its focus should be on storing files, but there is clearly a lot of unrelated activity around getting a MessageDigest instance--should it be this class' responsibility to create a kind of tunneled (via static method) dependency on the MessageDigest? There are a number of options for dependency injection all of which enable you to off load the responsibility to configure your objects to a framework dedicated to that purpose (Spring, Guice, PicoContainer, etc.).
I think you recognize the problem here, so that's a great start. As a rule you should be striving to not throw exceptions and usually object constructors are among my least favorite places to do so. The awkwardness you face here can go away completely if you make use of a framework to help you configure your objects. Also, not once but twice you are returning null--it will make you check for null on the other end of the method call and do you really want to do that? If you give this some thought, I bet you will want to find another way (and you do have other options).
Also, you'll find that configuring your objects with a specialized object creation factory (which is what those dependency injection frameworks are) will help you couple your components together much more loosely and this will promote the possibility of testing the components in isolation from their real dependencies--use mocks for testing. If you can make a shift in thinking where you're writing unit tests for the code you wish you had before you do anything else, you should expect to see much better designs begin to happen almost unconsciously. The GOOS book is a great resource to start with. Best wishes!
EDIT: I misread--looks like you return null just once, but that's still one time too many. :-/