Stream Cipher (สตรีมไซเฟอร์)
Stream cipher เป็นไซเฟอร์ที่เข้ารหัสกระแสข้อมูลดิจิทัลทีละบิตหรือทีละไบต์ Stream cipher โดยทั่วไปเข้ารหัสทีละไบต์ของข้อความในขณะนั้น แทนที่จะใช้บล็อก
ตัวอย่าง Stream cipher แบบคลาสสิกคือ Auto-key Vigenère cipher และ Vernam cipher ในกรณีเชิงแนวคิด เวอร์ชัน One-time pad ของ Vernam cipher สามารถใช้ได้ โดยที่ Key stream คือ Plaintext bit stream
หาก Cryptographic key stream เป็นสุ่ม ดังนั้นไซเฟอร์นี้จึงไม่สามารถแยกได้ด้วยวิธีอื่นนอกจากการรู้ Key stream อย่างไรก็ตาม Key stream ควรถูกส่งให้ทั้งสองฝ่ายล่วงหน้าผ่านช่องทางอิสระและปลอดภัย
สิ่งนี้แนะนำปัญหาด้านโลจิสติกส์ที่ไม่อาจเอาชนะได้ หากการจราจรข้อมูลที่ตั้งใจไว้สูงมาก ตัวสร้าง Bit-stream ควรถูกนำไปใช้เป็นกระบวนการอัลกอริทึม เพื่อให้ Cryptographic bit stream สามารถสร้างได้โดยทั้งสองฝ่าย
ในวิธีนี้ ตัวสร้าง Bit-stream เป็นอัลกอริทึมที่ควบคุมด้วยคีย์ และควรสร้าง Bit stream ที่แข็งแกร่งทางเข้ารหัสลับ ตอนนี้ สองฝ่ายต้องแค่แบ่งปันคีย์สร้าง (Generating key) และแต่ละฝ่ายสามารถสร้าง Key stream ได้
Block Cipher (บล็อกไซเฟอร์)
Block cipher เป็นไซเฟอร์ที่บล็อกของ Plaintext ถูกพิจารณาเป็นหนึ่งเดียว และใช้สร้างบล็อก Ciphertext ที่มีความยาวเท่ากัน โดยทั่วไปใช้ขนาดบล็อก 64 หรือ 128 บิต Block cipher รับข้อความและแบ่งเป็นบล็อกขนาดคงที่ และเปลี่ยนบล็อกหนึ่งของข้อความในแต่ละครั้ง
Block cipher ทำงานบนบล็อก Plaintext n บิต เพื่อสร้างบล็อก Ciphertext n บิต มีบล็อก Plaintext ที่เป็นไปได้หลายบล็อก และ เพื่อให้การเข้ารหัสสามารถกลับกันได้ (คือ การถอดรหัสเป็นไปได้) แต่ละบล็อกต้องสร้างบล็อก Ciphertext ที่ไม่ซ้ำกัน การแปลงดังกล่าวยังเรียกว่า Reversible หรือ Non-singular
Block ciphers พัฒนาบนออบเจ็กต์ทางคณิตศาสตร์ที่เรียกว่า Pseudo Random Permutations (PRP) เป็นฟังก์ชันที่กลับกันได้ ที่รับอินพุทค่า n-บิต m และคีย์ลับ k และสร้างเอาต์พุทค่า n-บิต c
PRP ถือว่าปลอดภัย หาก กำหนดคีย์ k ฟังก์ชันที่ได้จะเหมือนกับฟังก์ชัน bijection แบบสุ่มบนค่า n-บิต Block ciphers ใช้ PRP ที่ปลอดภัย
พวกเขาประกอบด้วยฟังก์ชันการเข้ารหัสที่สามารถเข้ารหัสบล็อก Plaintext เป็นบล็อก Ciphertext โดยใช้คีย์ลับ ฟังก์ชันถอดรหัสที่ดำเนินการย้อนกลับและดึงบล็อก Plaintext จาก Ciphertext
ความแตกต่างหลักระหว่าง Stream และ Block ciphers ขึ้นอยู่กับขนาดของข้อมูลที่จัดการในแต่ละการเข้ารหัส Stream ciphers เข้ารหัสทีละบิตจาก Bitstream และผลลัพธ์คือข้อความที่เข้ารหัสมีความสอดคล้องบิต-ต่อ-บิตกับข้อความ Plaintext