М-125 «Фиалка» — роторная шифровальная машина, разработанная в СССР вскоре после Второй мировой войны. Использовалась странами Варшавского договора до 1990-х годов. Большая часть машин после распада СССР была разобрана или уничтожена. Несколько экземпляров хранятся в частных коллекциях и музеях. Работающая модель представлена в Музее компьютерной истории в США и Блетчли-Парке в Великобритании. В истории криптографии мало что известно о «Фиалке», до 2005 года вся информация об устройстве держалась в секрете. Правильное определение «Фиалки» — кодировочная машина, поскольку она обладала более слабой криптостойкостью, чем шифровальные машины.
 «Фиалка» содержит устройство считывания с бумажной перфоленты справа, если смотреть спереди машины, а сверху — устройство для печати и для перфорирования ленты. Устройство вставки перфоленты для ввода ключа находится слева. «Фиалка» питается от источника постоянного тока напряжением 24 В, а через отдельный блок питания — от сети переменного тока 100-250 В, 50 или 400 Гц.
 Как и другие роторные машины, «Фиалка» состояла из комбинации механических и электрических подсистем. Механическая часть включала в себя клавиатуру, набор вращающихся дисков — роторов, — которые были расположены вдоль вала и прилегали к нему, и ступенчатого механизма, двигающего один или несколько роторов при каждом нажатии на клавишу. Движение роторов приводит к различным криптографическим преобразованиям при каждом следующем нажатии на клавишу на клавиатуре. Механические части двигались, замыкая контакты и образуя меняющийся электрический контур (то есть, фактически, сам процесс шифрования букв реализовывался электрически). При нажатии на клавишу клавиатуры контур замыкался, ток проходил через различные цепи и в результате получалась искомая буква кода.
 Сам по себе ротор производил очень простой тип шифрования: элементарный шифр замены. Например, контакт, отвечающий за букву E, мог быть соединён с контактом буквы T на другой стороне ротора. Но при использовании нескольких роторов в связке за счёт их постоянного движения получается более сложный, а следовательно, более надёжный шифр. Так же шифрование происходило в электронном блоке под названием «коммутатор», который имел 30х30 контактов. код в коммутаторе набирался путём вставки перфокарты. Согласно отверстиям в перфокарте замыкались контакты и производилась замена символа по аналогии с шифродисками (ротор).
 В центре каждой машины «Фиалка» 10 различных кодировочных колес (роторов), помеченных буквой русского алфавита, именно: 
 Каждый ротор представлял собой диск примерно 10 см в диаметре, сделанный из эбонита или бакелита, с 30 пружинными штыревыми контактами на одной стороне ротора, расположенными по окружности. На другой стороне находилось соответствующее количество плоских электрических контактов. Штыревые и плоские контакты соответствовали буквам в алфавите. Не учитывались буквы "Ё", "Й" и "Ъ". При соприкосновении контакты соседних роторов замыкали электрическую цепь.
 Коллекцию из этих 10 уникальных колес иногда называют «Протон». Есть два различных типа колеса: фиксированные и регулируемые. Фиксированные колеса были введены ранее для М-125-хх модели, в то время как регулируемые колеса были введены для M-125-3xx модели в 1978 году. В регулируемых наборах можно менять настройки внешнего кольца, тем самым получая 30 возможных позиций. Существенное отличие «Фиалки» от других роторных машин - каждый из роторов вращается в направлении, противоположном соседним.
 Различные наборы колес были выпущены для разных стран Варшавского договора. Известно значение нескольких префиксов:
 На крышке устройства находился запасной ротор.
 Как и в Энигме, в «Фиалке» использовался рефлектор, соединяющий пары проводов вместе. Наличие рефлектора гарантировало, что осуществляемое преобразование есть инволюция, то есть дешифрование представляет собой то же самое, что и шифрование. Однако в Энигме наличие рефлектора делает невозможным шифрование какой-либо буквы через саму себя. В «Фиалке» этот недостаток устранен.
 Из 30 контактов 26 соединены друг с другом в парах, но есть 4 «специальных» провода. Один провод используется для замены зашифрованной буквы на оригинальную. Это приводит к тому, что в 1 из 30 случаев буква закодирована сама в себя. Другие 3 провода подключены к транзисторной схеме (так называемый «Magic Circuit») и образуют вращающийся переключатель. В режиме кодирования контакт «x» подается на выход через «y», «y» — через «z», «z» — через «х». В режиме декодирования контакты «z» и «y» меняются местами.
 Для усиления криптографической стойкости машины у «Фиалки» применялась специальная общая суточная карточка в виде перфокарты. Каждая перфокарта имела 30 отверстий — ровно одно отверстие в строке и в столбце, и тем самым определяла перестановку для 30 роторных линий контакта. Использовалась в определенный день, указанный в левом верхнем ряду. Немного оригинальных перфокарт выжили, так как — в соответствии с протоколом — все они уничтожались по окончании текущих суток.
 Карточки были созданы СССР для всех стран Варшавского договора и ежедневно менялись. Каждая страна имела свою собственную уникальную колоду карт, каждая сроком на один месяц. Вместо перфокарты можно было использовать металлический треугольник. Треугольная пластина определяла нулевую перестановку, часто использовалась для проверки работоспособности машины.
 Также на каждый день была своя ключевая таблица. Для фиксированных роторных систем ключевые таблицы определяют порядок роторов на оси и параметры начального ротора, которые будут использоваться для расшифровки сообщения. Для регулируемых роторов в таблице также определяется электрическая вставка для каждого ротора. Вот пример для машины M-125-3NM для использования на 14-е число месяца:
 ИДЖЗА ВКБГЕ 14[прояснить]
 OCAHE PTБВЕ
 БДВИА ГЕЗКЖ
 2II22 I22I2
 КУЛКЮ ЫХВУГ
 Ключ не использовался более одних суток и обновлялся в 00:01 часов.
 Существует много вариантов «Фиалки», но в принципе, есть только две различные модели: ранней версии (M-125-хх) и более поздней (M-125-3xx). Их очень легко различить, поскольку они имеют различные клавиатуры. Суффикс «хх» был использован для определения страны/версии. Например, польская версия машины M-125-3MP, чешская версия М-125-3MP2. Модель M-125-3xx появилась в 1978 году. Эта модель имела следующие дополнительные возможности:
 Для каждой страны Варшавского договора была своя версия «Фиалки», адаптированная для местного языка. Каждая страна имела свою собственную клавиатуру и печатающую головку. Всё остальное было одинаковым. Большинство машин воспринимало латиницу и кириллицу. Латинский алфавит мог различаться, кириллица не имела знаков препинания и для всех машин была одинакова. По состоянию на 1984 год, в Советской армии использовались две машины, это М-125М и М-125-3М. Главное их различие заключалось в том, что в первой были буквы (30 букв) и цифры. Клавиатура второй представлена на фотографии. Самая первая «Фиалка» имела только 30 букв.
 Конструкция «Фиалки» во многом основывается на известных машинах типа «Энигма», которые использовались немецкими войсками во время Второй мировой войны. «Фиалка» похожа и на швейцарскую машину NEMA. Все эти машины работают с электромеханическими роторами. В «Энигме» использовалось три или четыре ротора, в NEMA - пять роторов, а в «Фиалке» использовалось 10 роторов. Для отображения выходных символов «Фиалка» печатает сообщение на бумажной ленте вместо загорающихся лампочек, как во многих других роторных машинах.
 Также «Фиалка» имеет много общего с американской KL-7.