Human ingenuity cannot concoct a cipher which human ingenuity cannot resolve.
In designing a good cipher … it is not enough merely to be sure none of the standard methods of cryptanalysis work–we must be sure that no method whatever will break the system easily. This, in fact, has been the weakness of many systems. … The problem of good cipher design is essentially one of finding difficult problems, subject to certain other conditions. This is a rather unusual situation, since one is ordinarily seeking the simple and easily soluble problems in a field.
While the NP complete problems show promise for cryptographic use, current understanding of their difficulty includes only worst case analysis. For cryptographic purposes, typical computational costs must be considered.
Cryptography is much older than computational complexity. Ever since people began to write, they invented method's for “secret writing” that would be difficult to decipher for others. But the numerous methods of encryption or “secret writing” devised over the years all had one common characteristic–sooner or later they were broken. But everything changed in 1970s, when, thanks to the works of several researchers, modern cryptography was born, whereby computational complexity was used to argue about the security of the encryption schemes.