Цифровая обработка сигналов. Водяные знаки в аудиофайлах: учебное пособие / Е.Л. Столов.

S = P2S [ 1 : - 1 ] # Переводим массив в строку и # удаляем пробелы NumSample = i n t ( S . r e p l a c e ( ’ 5) # Вычисление в системе по основанию 5 Val = DatN[NumSample] ValBin = b in (Va l ) NewBin = V a lB i n [ : - l ] NewBin += s t r (B ) NewVal = int (NewBin ,2) DatN [NumSample] = NewVal # Считывание водяного знака w r i t e ( ’wka.wav’ ,Fr,DatN) [Fr,Dat] = r e a d ( ’wka.wav’ ) Po sS ta te = n p . i n t _ ([ 1 , 0 , 0 , 0 ]) # Восстанавливаем начальное состояние AnswB = [] f o r I in xrange(8 * len (Wtr ) ) : Po sS ta t e = oneS tep (Po sMa tr .Po sS ta te ,Vec ,5) P2S = s t r (P o s S t a t e ) S = P2S[ 1 : - 1 ] NumSample = i n t ( S . r e p l a c e ( ’ 5) Val = Dat[NumSample] ValBin = b in (Va l ) В = in t (Va lB in [ - 1 ] ) AnswB. append(B) ConvState =np. i n t _ ( [1, 1, 1, 0, 0 ]) Restored = restoreWater(ConvMatr,ConvState,AnswB) Answ = b i t a r r a yO Answ. ex tend(Res tored) p r i n t Answ . toby tesO Этот скрипт реализует процедуру внедрения ЦВЗ в наименее значимый бит. Здесь для шифрования последовательности использована сопровождающая матрица многочлена 101001 над полем GF(2) . Для изменения номера отсчета лри-

RkJQdWJsaXNoZXIy MTExODQxMg==