Provide a design for a cryptography problem, which was illustrated in a scenario using complex ADT and algorithms, and critically evaluate the complexity of these algorithms. Implement this design using Java and NetBeans IDE. The source code should implement error handling and displays appropriate error messages. You should test your application and report the results. Please explain the steps and what data structures you used. A simple code is suitable with an interface. Thank you in advance. LO3 Implement complex data structures and algorithms.