Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 25, 2016 17:33:22

alextt
Зарегистрирован: 2016-12-24
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

задача на chr и ord

Написать ф-цию cypher для шифрования строки.
Правила шифрования: Каждый символ заменяется на другой, который стоит следующим в таблице символов ASCII (или другими словами, код нового символа на 1 больше, чем код заменяемого символа).



  def cypher(s):
   chr
    ord
    
    return r
print(cypher("abc")) # bcd
print(cypher("CAT")) # DBU
print(cypher("z")) # a

Отредактировано alextt (Дек. 25, 2016 17:34:04)

Офлайн

#2 Дек. 25, 2016 18:19:19

Romissevd
От: Счастье
Зарегистрирован: 2015-03-01
Сообщения: 533
Репутация: +  76  -
Профиль   Отправить e-mail  

задача на chr и ord

 def cypher(s):
    res = ''
    for x in s:
        res += chr(ord(x)+1)
    return res
только результат вычисления ‘z’ будет равен ‘{’, т.к. это следующий символ в таблице ascii

Офлайн

#3 Янв. 5, 2017 17:15:23

_nemo_
Зарегистрирован: 2017-01-02
Сообщения: 34
Репутация: +  1  -
Профиль   Отправить e-mail  

задача на chr и ord

этот метод шифрования в криптографии называется ‘Метод Цезаря’
Дешифруется специалистами в течении 10 минут.
Шифротекст сопоставляется с таблицами вероятностей, программа сама расшифровывает текст.
Рекомендую обратить внимание на метод Виженера с закрытым ключем, т.е. на метод Белазо.

Aa 8,17 %
Bb 1,49 %
Cc 2,78 %
Dd 4,25 %
Ee 12,70 %
Ff 2,23 %
Gg 2,02 %
Hh 6,09 %
Ii 6,97 %
Jj 0,15 %
Kk 0,77 %
Ll 4,03 %
Mm 2,41 %
Nn 6,75 %
Oo 7,51 %
Pp 1,93 %
Qq 0,10 %
Rr 5,99 %
Ss 6,33 %
Tt 9,06 %
Uu 2,76 %
Vv 0,98 %
Ww 2,36 %
Xx 0,15 %
Yy 1,97 %
Zz 0,07 %

Отредактировано _nemo_ (Янв. 5, 2017 18:30:00)

Офлайн

#4 Янв. 5, 2017 22:17:56

_nemo_
Зарегистрирован: 2017-01-02
Сообщения: 34
Репутация: +  1  -
Профиль   Отправить e-mail  

задача на chr и ord

Вот пример:

Всего в тексте знаков:
num_all = 5348

Количество повторений букв:

 [478, 105, 97, 337, 557, 75, 126, 306, 340, 6, 56, 220, 139, 369, 470, 71, 0, 222, 313, 533, 176, 37, 197, 2, 116, 0]

Теоретическое распределение вероятоносей:
 [8.17, 1.49, 2.78, 4.25, 12.7, 2.23, 2.02, 6.09, 6.97, 0.15, 0.77, 4.03, 2.41, 6.75, 7.51, 1.93, 0.1, 5.99, 6.33, 9.06, 2.76, 0.98, 2.36, 0.15, 1.97, 0.07]

Фактическое распределение вероятностей:
 [8.94, 1.96, 1.81, 6.3, 10.42, 1.4, 2.36, 5.72, 6.36, 0.11, 1.05, 4.11, 2.6, 6.9, 8.79, 1.33, 0.0, 4.15, 5.85, 9.97, 3.29, 0.69, 3.68, 0.04, 2.17, 0.0]

Английские буквы A,E,T отчетливо видны, далее определяется сдвижка текста и все… Можно прочитать

Отредактировано _nemo_ (Янв. 5, 2017 22:18:23)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version