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?
I think it is insecure to have just a hash of the email address as hashing algorithm is not reversible but it is theoretically possible to have incorrect email that has the same hash as correct one. It is true for md5 hash algorithm and theoretically true for any other.
I suggest to use some kind of salt (additional hash function payload) or personal registration keys and of cause do not use md5 ever.
With the salt that you know and "military" knows you can receive just hashes from "military" and be kindly sure that encryption is fair enough to identify recruits by email. But this technique is vulnerable to random hash coincident still.
Probably, the best way to be sure that recruit's email is truly valid is to give recruits unique registration codes on "military" side, than they need to give you pairs of registration code and the hash of the code and the corresponding email. Than every recruit will need to provide that registration code and you will be able to recalculate the recruit's personal hash from his email and registration code.
The benefit of the second way is that even you will not be able to easy brute force the hashes into emails if the "military" will give you not just the pairs of code/hash but the list of the codes for every hash, only one of which will be correct.
Update: The paranoia culmination way. You receive just a number of hashes from "military" two times more than the recruits number is. Every recruit receives unique registration code. Than you will need to calculate registration code hash first and check if you have it. Than you will need to combine this hash with the email and check if you have the second hash. This way you will not be able to reverse emails yourself ever.
Authenticating email address without being able to view email address