Modern cryptography , is implemented in software or hardware and is used for a diverse range of applications ; for many applications , a chosen-plaintext attack is often very feasible . Modern cryptography , on the other hand , is implemented in software or hardware and is used for a diverse range of applications ; for many cases , a chosen-plaintext attack is often very feasible .