# Cryptography
**Cryptography** is the study of encryption principles and/or methods.
| Key Term | |
| --------------------- | --------------------------------------------------------------------- |
| *plaintext* | the original message |
| *ciphertext* | the encrypted message |
| *cipher* | the encryption algorithm for transforming plaintexxt to ciphertext |
| *key(s)* | info used by cipher algorithm should be known only to sender/receiver |
| *enchipher* (encrypt) | converting plaintext to ciphertext |
| *decipher* (decrypt) | recovering plaintext from ciphertext |
| *crypto* | |
An **attack vector** is a particular method for executing an attack.
$C=E_K(M) \text{ or } C=E(k, M)$
where:
- $M$ represents the plaintext message
- $C$ represents the ciphertext
- $E$ represents the encryption algorithm/function
- $K$ is the key
## Encryption
- Public-Key Encryption
- Use a different key for decryption than for encryption
- The keys are related mathematically
### Ciphers
> See also:
> - [[Ciphers]]
### Hashing Algorithms
> See also:
> - [[Hash Functions]]
- Hashing algorithms are often tuned to the data that is being hashed
**Requirements:**
- Collision resistance: prevent duplicate hash values
### Random Numbers
**Requirements:**
- True Randomness: Requires a [[Probability Distributions 1|uniform distribution]] where each value is equally likely
- Independence
**Shortcomings of Pseudo-Random Generators**
-
---
- [ ] Digital Signatures
## Public-Key Cryptography
- [ ] Diffie-Hellman Key Exchange
- [ ] RSA Encryption
## Private-Key Cryptography