I recently wanted to know which hash functions were available to Java in a given machine, so I cooked up a little command line tool for that. Maybe this could be useful to others so I posted it here.
Java hash functions are implemented as a MessageDigest object, which you can’t instance directly but rather get an instance through the MessageDigest.getInstance() static method. It takes as it’s only argument a string with the name of the algorithm – but I couldn’t find an easy way to enumerate all available algorithms.
After a little googling I found this code example at Example Depot to do it programatically. Since results may vary from one installation of Java to the next, a command line tool would have been more useful to me, but I don’t know of any. (If you do, let me know!)
Anyway, I wrapped the code in a very simple Main function and compiled it using Eclipse. I called this little tool “ListServices” because I didn’t feel like thinking of a catchy name. 😛
By default this tool lists all available cryptographic providers, but you can specify just the ones you need (in the example below, we type MessageDigest to get just the hashing algorithms):
$ java -jar ListServices.jar
KeyFactory:
1.2.840.113549.1.3.1
OID.1.2.840.113549.1.1
1.2.840.113549.1.1
OID.1.2.840.113549.1.3.1
1.3.14.3.2.12
DSA
DiffieHellman
RSA
DH
1.2.840.10040.4.1
TransformService:
INCLUSIVE_WITH_COMMENTS
ENVELOPED
(... output omitted for brevity ...)
$ java -jar ListProviders.jar MessageDigest
MessageDigest:
SHA-256
SHA-512
SHA
SHA-384
SHA1
MD5
SHA-1
MD2
$
Enjoy! 🙂
Update: Added source code to Github.







