Crypto-Core Design Using Functional Programming Techniques