Suppose the following imagined scenario:

I have a site that is used for military recruits.
Military recruits and only military recruits may sign up on this site.  - The easiest way to authenticate would be to get a list of pre-authorized email addresses. However, the military obviously will not release their email address list.
How would I authenticate these individuals to sign up?

My initial thought would be that I could get a sha3 hash of the email addresses. Then, when people register, I would check the sha3 of the email address they entered against the database. Basically, this would be a way to get a boolean back of whether the email is in the system without knowing the email address. 
Does this sound like a realistic approach, that would ensure the anonymity of the email address? Any better ideas to accomplish this?
This is a workable zero-knowledge proof. However, if you have the co-operation of the military, one would think you could do better... You could get a (otherwise non-sensical) serial number and initial password from the military, and then have the recruits sign in using that.
This will solve the problem of people not having a 1:1 relationship to an e-mail address, and be much harder to guess, too, since you need to guess the password as well as the serial number.
Authenticating email address without being able to view email address