2. 2. ЦВЗ на основе наименее значащих битов Начнем изложение с простейшего способа внедрения водяного знака модификация наименьших значащих битов, или Least Significant Bits (LSB). Несмотря на известные недостатки этого метода, о которых будет сказано ниже, этот метод пользуется популярностью вследствие своей простоты. Идея метода заключается в следующем. Исходный водяной знак превращается в битовую последовательность. Биты этой последовательности замещают наименее значащие биты (ИЗБ) в отдельных отсчетах аудиофайла. Для извлечения ЦВЗ достаточно собрать все НЗБ из нужных отсчетов и поместить их в одну строку. По классификации, представленной в предыдущем параграфе, это внедрение во временную область, для обнаружения не нужен чистый файл и при внедрении не учитывается особенность контейнера. Реализация метода представлена ниже. Обратим внимание на несколько обстоятельств. 1. Реализация алгоритма использует модуль bitarray (версия 0.8.1 на момент написания пособия). 2. В бинарном представлении целых чисат НЗБ занимает последнюю позицию. 3. По умолчанию для букв кириллицы использована кодировка utf8. from b i t a r r a y import b i t a r r a y from s c i p y . i o . w a v f i l e import r e a d ,w r i t e [Fr,Dat] = r e a d ( ’ka .wav’ ) # Здесь ka.wav имя произвольного # файла в формате wav, 16 b i t Wtr = ’Я автор этого произведения’ # Это внедряемый водяной знак B i t = b i t a r r a yO B i t . frombytes(Wtr)
RkJQdWJsaXNoZXIy MTExODQxMg==