Block Cipher
A block cipher is a method of encrypting data in fixed-size chunks (called blocks) using a secret key.
Each block of plaintext (for example, 128 bits) is transformed into a block of ciphertext of the same size.
It works like a codebook: the same input block with the same key always produces the same encrypted output. Examples include AES and DES.
Stream Cipher
A stream cipher encrypts data one bit or byte at a time, using a continuously changing key stream.
It works like mixing your data with a random-looking stream of bits (often using XOR). This makes it fast and good for streaming data, such as video or voice. Examples include RC4 and ChaCha20.
Symmetric Encryption (Pre-Shared Key, PSK)
The same key handles the encryption/ decryption
Asymmetric Encryption
Use a key pair to perform encryption/ decryption, one key encrypts, another decrypts
Encrypt Key = Public Key
Decrypt Key = Private Key
Key Exchange
Symmetric Encryption schemes use Asymmetric Encryption to safely share the key used for Symmetric Encryption.
Asymmetric Encryption can simply send the public key over as plain text, since it has no value to an attacker.
Small Key Lengths
-Weaker
-Less CPU Intensive
-Faster
Large Key Lengths
-Stronger
-More CPU Intensive
-Slower
Hash Salting
Adding a random string to a value which is being hashed in order to randomize it further.
This protects against attackers using known hashes to break commonly used passwords.
Key Stretching
Running a file through multiple hashing algorithms in a row to further protect the original file