Synchronization of neural networks by mutual learning and its application to cryptography