-аппаратные, когда за шифровку/расшифровку отвечает особая железка, находящаяся на пример, между usb портом компьютера и, собственно, модулем памяти.
-программные, когда за шифровку/расшифровку отвечает особая программка.
А еще можно поделить на способы шифрования:
-симметричные, если коротко-для зашифровки и расшифровки, используется одмн ключ.
-ассиметричные, к гадалке не ходи, тут используюся 2 ключа, одним шифруем (открытый), другим расшифровываем (закрытый)
-необратимое шифрование-шифрование "в одну сторону"
Вот это "необратимое"... Необратимость-то там довольно условная, ибо завсегда можно составить табличку пароль-хеш, ибо, хеши не меняются от времени, и пользовать её для расшифровки.
Зачем-то, еще в прошлом году, задумался о здоровенной таблице, для расшифровки хешей md5, но столкнулся с небольшой проблемой.
Когда-то, я сам для себя решил, что всё, что я буду делать, я буду делать в кодировке utf-8, что-бы избежать проблемы с конфликтами кодировок, всё было хорошо, ровно до тех пор, пока функция посчета букв, стала шалить и не показывать то, что нужно, если в ...
А я мнова вышивать начал. Даже слегка отвык от таких дел, но бабочек для супруги нужно осилить =)