Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- напишем модуль числа --
- modul x
- |x<=0 = -x
- |x>0 = x
- -- taker берет из списка элемент под его номером --
- taker n [] = 'A'
- taker 0 (x:xs) = 'A'
- taker n (x:xs)
- | n==1 = x
- | n /= 1 = taker (n-1) xs
- -- giver принимает номер и список и находит элемент из списка под этим номером --
- giver1 :: Eq a => a -> [a] -> Int -> Int
- giver1 k [] n = 0
- giver1 k (x:xs) n
- |k==x = n
- |k/=x = giver1 k xs (n+1)
- giver :: Eq a => a -> [a] -> Int
- giver k (x:xs) = giver1 k (x:xs) 1
- -- преобразовывает из буквы в цифру и наоборот --
- wton w = giver w ['A','B'..'Z']
- ntow n = taker n ['A','B'..'Z']
- -- Пишем программу которая с помощью слова и кода шифрует сообщение --
- wiginerShifr1 w1 w2 = ntow $ ( (wton w1)+(wton w2)-1 ) `mod` 26
- wiginerShifr2 l kw = zipWith wiginerShifr1 l kw
- wiginerShifr l kw = wiginerShifr2 l (take (length l) (cycle kw))
- -- Пишем дешифратор использующий код и зашифрованное сообщение --
- wiginerDeshifr1 w1 w2 = ntow $ modul $ ((wton w1) + (27 - wton w2)) `mod` 26
- wiginerDeshifr2 l kw = zipWith wiginerDeshifr1 l kw
- wiginerDeshifr l kw = wiginerDeshifr2 l (take (length l) (cycle kw))
- -- telinit@yandex.ru --
- -- vk.com/telinit --
- -------------------------------------------------------------------------------------------------------
- {- Попробуем написать взламыватель шифра Виженера -}
- -- список частот встречающихся букв --
- -- в английском тексте [8.2,1.5,2.8,4.3,12.7,2.2,2.0,6.1,7.0,0.2,0.8,4.0,2.4,6.7,7.5,1.9,0.1,6.0,6.3,9.1,2.8,1.0,2.4,0.2,2.0,0.1] --
- -- номер числа в списке равен номеру буквы в алфавите (английском) --
- {-Единственный метод расшифровки шифра цезаря это частотный криптоанализ.
- С его помощью попробуем сломать шифр Виженера.Придется брать большие тексты.-}
- -- chastotSimvol берет на вход список и символ и возващает кол-во этого символа в списке --
- chastotSimvol k l = length $ filter (==k) l
- chastotSimvol_Procent k (x:xs) = (fromIntegral (chastotSimvol k l)) / (fromIntegral (length l))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement