add simple Diffie-Helman public key distribution algorithm; improve organization by splitting up cryptanalytic methods into separate files