# Cryptography Glossary (with java insights)

Writing up a quick cheat sheet for cryptography terms and concepts.

- Plain text — The sensitive text or data that needs to be encrypted
- Cipher text — The text output from an encryption operation. This will also be the input to a decryption operation. It will be non-readable.
- Key — A single piece of data (or a corelated pair of data) use in the encryption and decryption operation.
- Salt — Random piece of data added to a hashing function, to increase randomness / reduce predictability
- Encryption — way to
**mask**data — converting plain text to cipher text in such a way that it can be converted back when needed — 2 types : symmetric and asymmetric — refer for more details - Digital Signature — way to
**authenticate**—usually achieved via asymmetric keys — sender signs data with his private key — so receiver can verify using sender’s public key that the message was indeed sent by the right sender. - Hashing — way to
**map**data — one way mathematical function, when applied to a piece of data, will ALWAYS produce the same arbitrary set of bytes. Bytes can not be converted back to the original data. - Key Alias — a human readable alias / name given to a key for reference

Terms and concepts related to cryptography in java.

- JCA — Java Cryptography Architecture — provides cryptography engines and APIs which various JRE providers can implement
- JCE — Java Cryptography Extensions — default JCA provider for Oracle Java
- Key store — stores cryptographic keys
- Trust store — stores certificates

Various JCA Engines :

- Secure Random — to produce strong randoms numbers
- Message Digest — to produce secure hashes
- Signature — to produce and verify digital signatures
- Cipher Engine — to provide encryption operations