Для разработки данной программы было решено использовать такой язык программирования как Python3. Реализация приложения выполнялась в интегрированной среде разработки для языка программирования Python3.
Теоретическое введение:
Формат WAVE
WAVE или WAV является короткой формой Wave Audio File Format (реже именуемой как Аудио для Windows). Этот формат является стандартом для хранения аудио потока на ПК. Он является сферой приложения формата RIFF для хранения аудио в «цепочках», это очень напоминает форматы 8SVX и AIFF, используемые компьютерами Amiga и Macintosh соответственно. Это также основной формат на системах Windows для хранения обычного несжатого звука. Как правило, для этого применяется кодирование методом линейной импульсно-кодовой модуляции.
Описание
Как WAV, так и AIFF совместимы с операционными системами Windows, Macintosh или Linux. Формат также учитывает некоторые отличия процессоров Intel, такие как порядок байтов от младшего к старшему. RIFF формат выполняет роль обертки для различных кодеков аудио сжатия.
Несмотря на то, что WAV файл может содержать сжатое аудио, наиболее обычным его применением является хранение как раз несжатого аудио в формате линейной импульсно-кодовой модуляции (LPCM). Стандартным форматом Audio-CD, например, является аудио в формате LPCM, с 2 каналами, частотой дискретизации 44 100 Гц и 16 бит на сэмпл. Так как формат LPCM хранит несжатое аудио, которое абсолютно идентично оригиналу, это позволяет использовать его профессиональным пользователям и аудио экспертам для получения максимального качества звучания. WAV аудио файл также может быть изменен практически в любом аудио редакторе. WAV формат работает со сжатым звуком в системах семейства Windows через Audio Compression Manager (ACM). Любой ACM кодек может быть использован для сжатия WAV файла. Пользовательский интерфейс для ACM может быть доступен через множество программ, включая и стандартную программу для записи звука в некоторых версиях Windows.
Начиная с Windows 2000, появился заголовокWAVE_FORMAT_EXTENSIBLE, который позволял хранить многоканальные аудио данные, учитывал расположение динамиков, исключал неоднозначности в плане типов сэмпла и размеров контейнера в стандартном WAV формате. Также он поддерживал произвольные расширения формата чанка.
Также существует много несоответствий в формате WAV: например, 8-битные данные являются без знаковыми, в то время как 16-битные – знаковыми.
WAV файлы могут содержать встроенные IFF «списки», которые могут содержать несколько «подчанков».
Реализация программы:
Данная программа представляет собой приложение консольного типа. Программа разработана в среде программирования PyCharmProfessional 2016.3.1. В качестве языка программирования используется высокоуровневый язык программирования общего назначения— python3.
Основным файлом программы является файл "cipher.py".
В данной программе используются следующие библиотеки и встроенные модули:
from Crypto.Cipher import DES
import sys
Модуль Crypto предназначен для работы с шифрованием/дешифрованием.
Библиотека sys - это бибилиотека обеспечивает высокоуровневое воздействие с операционной системой
В данной программе реализованна поддержка шифрования/дешифрования, передача через консоль таких аргументов как:
enc/dec – шифрование/дешифрование файла
filename1 – имя файла из котого будет производится шифрование/дешифрование
filename2 – имя файла в котором будет записан результат работы программы.
Так же реализованна проверка на кол-во блоков (8 бит) в файле и в случае если размер файла не кратен 8-ми бит, производится дописываение x00 (нулевых бит) в конец файла.
Проверка правильности введенных агрументов программы и их количество.
После шифрования файл воспроизводится, но вместо нормально звука только шумы и выглядит он – так:
Рис. 1. Результат работы программы шифрования.
Список литературных источниковЛутц М. Изучаем Python, 4 издание: Символ-Плюс, 2011.
Лутц М. Программирование на Python, 4 издание, I том: Символ-Плюс, 2011.
sys – System-specific parameters and functions[Электронныйресурс].
URL: https://docs.python.org/3.4/library/sys.html
Формат WAVE[Электронный ресурс].
URL: http://audiocoding.ru/formats/wav/
Алгоритм DES[Электронный ресурс].
URL: https://www.opennet.ru/docs/RUS/inet_book/6/des_641.html
ПриложениеЛистингмодуляcipher.py
from Crypto.Cipher import DESimport sysif __name__ == '__main__': if len(sys.argv) is not 4: print('Error argv') print('Example encrypt ntpython cipher.py enc name.wave enc.wave') print('Example decrypt ntpython cipher.py dec enc.wave name.wave') exit(1) if sys.argv[1] == 'enc': with open(sys.argv[2], 'rb') as fr: cipher = DES.new(b'-8B key-', DES.MODE_ECB) data = fr.read() if len(data) % 8 == 0: msg = cipher.encrypt(data) else: msg = cipher.encrypt(data + b''.join([b'x00' for i in range(8 - len(data) % 8)])) with open(sys.argv[3], 'wb') as fw1: fw1.write(msg) print('Encryption successful') if sys.argv[1] == 'dec': with open(sys.argv[2], 'rb') as fw1: with open(sys.argv[3], 'wb') as fw2: data = fw1.read() cipher = DES.new(b'-8B key-', DES.MODE_ECB) fw2.write(cipher.decrypt(data)) print('Decryption was successful')