History teaches us some very valuable lessons about cryptography. I have extracted some of the basic concepts in a distilled form below. Designing a system based on these principles will make successful cryptanalysis more difficult.
1. Every system that is practical is breakable.
2. Sending the same message encrypted and in plaintext provides an invaluable reference to the cryptanalyst. Sending the same message using different keys or systems can also aid cryptanalysis.