CRYPTOGRAPHY MUST BE PROGRAMMING RELATED. Cryptography covers, among other things, encryption, hashing and digital signatures. Cryptography questions not directly related to software development are better asked at

- Wiki
10 articles, 3 books. Go to books ↓

A digital signature is a mathematical scheme that demonstrates the authenticity of a message or document. A valid digital signature gives the recipient reason to believe that the message was created by a known sender, such that the sender cannot deny having sent the message (authentication and non-repudiation) and that the message was not altered in transit (integrity).

If you do a web search for “encrypting Strings in Android”, you’ll find a lot of example code, and they all look pretty similar. They definitely input a String and output gibberish that looks like encrypted text, but they are often incorrect. Crypto is tricky: it’s hard to tell that the gibberish that’s being printed is not good crypto, and it’s hard to tell that the code example you picked up from Stack Overflow has serious flaws.

There have been rumors for years that the NSA can decrypt a significant fraction of encrypted Internet traffic.

A list of common cryptography mistakes and how to avoid them.

Cryptography is used all over the world to protect data from prying eyes. If you want to protect your own data you should be familiar with this topic.

Crypto 101 is an introductory course on cryptography, freely available for programmers of all ages and skill levels.

Bad crypto is everywhere, unfortunately. The frequency of finding crypto done correctly is much less than the number of times I find it done incorrectly. Many of the problems are due to complex crypto APIs that are insecure by default and have have poor documentation.

This "never implement your own crypto" business went a little too far.