http://www.cryptosystem.net/hfe/