Шифрування являє собою процес перетворення простих текстових даних (відкритого тексту) в те, що здається випадковим і безглуздим (шифротекста). Дешифрування є процес перетворення зашифрованого тексту назад у відкритий текст.
Для шифрування більш ніж невелика кількість даних, використовується симетричне шифрування. Симетричний ключ використовується як під час процесів шифрування і дешифрування. Для того, щоб розшифрувати певну частину шифротекста, необхідно використовувати ключ, який був використаний для шифрування даних.
Мета кожного алгоритму шифрування, щоб зробити його так складно, як можна розшифрувати згенерований шифротекста без використання ключа. Якщо дійсно хороший алгоритм шифрування використовується, немає метод значно краще, ніж методично намагається кожен можливий ключ. Для такого алгоритму, тим більше ключ, тим важче розшифрувати шматочок шифротекста, не маючи ключа.
Важко визначити якість алгоритму шифрування. Алгоритми, які виглядають багатообіцяючими іноді виявляються дуже легко зламати, враховуючи правильну атаку. При виборі алгоритму шифрування, це гарна ідея, щоб вибрати той, який був в експлуатації протягом декількох років і успішно пручалися все атаки.