Форум программистов, компьютерный форум, киберфорум
Криптография
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/18: Рейтинг темы: голосов - 18, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 29.12.2012
Сообщений: 23

Полиалфавитные подстановки, не получается расшифровать сообщение

30.12.2012, 17:13. Показов 3616. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет форумчане. Помогите пожалуйста, такая программа RELA12.exe так вот там есть полиалфавитные подстановки, у меня никак не получается расшифровать сообщение и длину ключа изменял, и по частотному анализу, быть может у кого есть расшифрованные, лабы или ещё что. Я три дня сидел всё бестолку. Я вариант w_v18.

Добавлено через 6 часов 1 минуту
Ребята, ну помогите пожалуйста, горит.

Добавлено через 16 часов 38 минут
Ребят, может кто тогда поможет расшифровать шифр Виженера:
ХУКБПЛБГДПЦКШКЬПНХ УЬМЭЦЛ ФМОКЦЩЯЭНЯЧНЛСЯУЫУЙЩУШЩНЛСЭРШМЛВННРЙЧКФШ ЩСЛЕЭЫ МЛСЭЦСЛМЗАЭПЗИСЭА ЕЛДНСЩПЩКНУРЧЬУУДЦХФЗНО ЩЯАНЩВЬМДЩЙЦЬЛЖЭЦФЦСБЦШ ЛРВНУРКСЩЫЩЦЗОР Ь ФФПОШЩНЛМЭШЦ ЩРННВЖЦРЬЯРКЬНИШ ЗЮОУЙГВЮАНШСМЛПУХ ЬЬТЙЧЩЗФЧНЭГШМПЫЩВЬКОЦКЯЦЛЬБЮЫРЛСЭНЦШБПЭ ЭГХЬЕЭКЯИННЛПСЬСНМКЯНЛОЭОДЬЛХЫУИЬЬИЦЮЛЗФ ЧНЭДБСУАНЦХЩЮГКХЦЮФЭУЯЩЯД
Длина ключа-6. Я реально не знаю, что делать.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
30.12.2012, 17:13
Ответы с готовыми решениями:

Не получается расшифровать
За тьгаазб гсьо яьмз ваооузад Щьг гь уь чаик О шнцс уьщс Етаду яьмз ьпцсе од епщ иду тпесыц Ключ спрятан в картинке p.s....

Не получается расшифровать zlib
Строка заширована zlib с параметрами по умолчания, написана программа для декодировки, но неверный ответ дает(какие то иероглифы в том...

Не получается расшифровать строку
Помогите найти ошибку.Пытаюсь зашифровать первые 8 символов строки и расшифровать,но на выходе строка получается явно отличной от...

10
Эксперт С++
 Аватар для grizlik78
2382 / 1666 / 279
Регистрация: 29.05.2011
Сообщений: 3,402
31.12.2012, 02:58
Шифрованный текст, в котором есть пробелы как символы, не годится в таком виде выкладывать на форум. Вдруг там в каком месте было больше одного пробела подряд? Если программа генерирует файл, то лучше именно этот файл и прикрепить.
Ну а для криптоанализа шифра Виженера с известной длиной ключа можно попробовать использовать взаимный индекс совпадений. Несколько подробнее метод рассматривается в учебном пособии "А. Алферов и др. Основы криптографии. Учебный курс"
0
0 / 0 / 0
Регистрация: 29.12.2012
Сообщений: 23
31.12.2012, 14:01  [ТС]
Да программа не генерирует файл, он уже дан в качестве готового.
0
Эксперт С++
 Аватар для grizlik78
2382 / 1666 / 279
Регистрация: 29.05.2011
Сообщений: 3,402
31.12.2012, 16:13
Ну так готовый файл бы не помешал. Точный алфавит неизвестен?
0
0 / 0 / 0
Регистрация: 29.12.2012
Сообщений: 23
31.12.2012, 16:29  [ТС]
Вот собственно и он. Алфавит: кириллица+пробел.
Вложения
Тип файла: txt Текстовый документ.txt (310 байт, 29 просмотров)
0
85 / 80 / 15
Регистрация: 25.05.2012
Сообщений: 230
Записей в блоге: 3
02.01.2013, 19:55
Проверте ключ "символ".

Что успел разобрать
"для ....шика ... уже приключение поезд а в ближний город полагается ... в жизни и посещение ... долгое иногда и вечное воспоминание конешно ... над некоторыми их ....."

П.с.:
Празднование... рассол... голова болит...
2
Эксперт С++
 Аватар для grizlik78
2382 / 1666 / 279
Регистрация: 29.05.2011
Сообщений: 3,402
03.01.2013, 02:06
Я тут попрактиковался немного в питоне. Далее текст программы, которая проводит дешифрование данного файла.
Несколько комментариев. Если алфавит не угадать, то результат может и не оказаться таким хорошим. Алфавит задан в программе явно. Текст не очень длинный, поэтому статистический анализ не очень надёжен. Для последнего символа ключа получилось два равноценных варианта 'л' и 'е'. Программа выдаёт 'л', но это везение и немного жульничества
Тем не менее метод индекса взаимных совпадений работает, и, при этом, почти в автоматическом режиме.
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
#!/usr/bin/python
# -*- coding: utf-8 -*-
 
# Индекс совпадений
def get_Ic(a):
    return float(sum([a.count(c)*(a.count(c)-1) for c in set(list(a))])) / (len(a) * (len(a) - 1))
 
# Определение длины ключа (только для вывода на экран) 
def find_len(a):
    for klen in xrange(1, 20):
        IC = 0
        for i in xrange(klen):
            b = [ a[j] for j in xrange(i, len(a), klen)]
            IC += get_Ic(b)
        IC /= klen
        print "klen:", klen, ":", IC
 
# Индекс взаимных совпадений
def get_MIc(a, b):
    return float(sum([a.count(c)*b.count(c) for c in set(list(a) + list(b))])) / (len(a) * len(b))
 
# Шифрование списка шифром Цезаря
def caesar_enc(a, k, m):
    b = [(x + k) % m for x in a]
    return b
 
# Расшифрование
def caesar_dec(a, k, m):
    b = [(x - k) % m for x in a]
    return b
 
# Определение разности ключей для двух списков (колонок текста)
def get_shift(a, b, m):
    MIC = [get_MIc(a, caesar_enc(b, i, m)) for i in xrange(m)]
    print max(MIC)
    return -MIC.index(max(MIC)) % m 
 
# Чтение шифротекста
f = open("cipher.txt", "r")
xc = f.read()
f.close()
uc = xc.decode('cp1251').strip().upper()
 
# Алфавит
abc = u"АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЫЭЮЯ "
 
# Кодирование символов
cipher = []
for ch in uc:
    cipher.append(abc.index(ch))
 
# Выводим индексы совпадений для различных длин ключа
find_len(cipher)
 
# Разбиение текста на столбцы в соответствии с выбранной длиной ключа
klen = 6
cols = [[] for i in xrange(klen)]
i = 0
for ch in cipher:
    cols[i].append(ch)
    i += 1
    if i >= klen: i = 0
 
# С помощью индекса взаимных совпадений определяем ключ
# Ключ получается зашифрованным шифром цезаря
key = [get_shift(cols[0], cols[i], len(abc)) for i in xrange(klen)]
print key
 
# Логарифмы частостей наиболее часто встречаемых символов (в произвольном масштабе)
rate = len(abc)*[0]
ch = [u' ', u'О', u'Е', u'А', u'И', u'Н', u'Т', u'С', u'Р', u'В', u'Л']
r  = [1.92, 1.72, 1.61, 1.58, 1.55, 1.50, 1.48, 1.42, 1.35, 1.33, 1.32]
for i in xrange(len(ch)): rate[abc.index(ch[i])] = r[i]
 
# Перебираем все варианты ключа (по количеству символов алфавита)
R = []
for k in xrange(len(abc)):
    work_key = caesar_dec(key, k, len(abc))
    print "KEY:", ''.join([abc[ch] for ch in work_key])
    plain = [(cipher[i] - work_key[i % len(work_key)]) % len(abc) for i in xrange(len(cipher))]
    R.append(sum([rate[p] for p in plain]))
    print ''.join([abc[p] for p in plain])
    print
 
# Выводим наиболее вероятный ключ и текст
k = R.index(max(R))
best_key = caesar_dec(key, k, len(abc))
print "========="
print "BEST KEY:", ''.join([abc[ch] for ch in best_key])
plain = [(cipher[i] - best_key[i % len(best_key)]) % len(abc) for i in xrange(len(cipher))]
print ''.join([abc[p] for p in plain])
Текст программы должен быть в кодировке utf-8 или же надо изменить "шапку".
Результат:
=========
BEST KEY: СИМВОЛ
ДЛЯ БАРЫШНИ ЗВОН КОЛОКОЛЬЧИКА ЕСТЬ УЖЕ ПРИКЛЮЧЕНИЕ ПОЕЗД А В БЛИЖНИЙ ГОРОД ПОЛАГАЕТСЯ ЭПОХОЮ В ЖИЗНИ И ПОСЕЩЕНИЕ ГОСТЯ ОСТАВЛЯЕТ ДОЛГОЕ ИНОГДА И ВЕЧНОЕ ВОСПОМИНАНИЕ КОНЕЧНО ВСЯКОМУ ВОЛЬНО СМЕЯТЬСЯ НАД НЕКОТОРЫМИ ИХ СТРАННОСТЯМИ НО ШУТКИ ПОВЕРХНОСТНОГО НАБЛЮДАТЕЛЯ НЕ МОГУТ УНИЧТОЖИТЬ ИХ СУЩЕСТВЕННЫХ ДОСТОИНСТВ

Добавлено через 1 минуту
Цитата Сообщение от ostapdzen Посмотреть сообщение
Проверьте ключ "символ".
Если не сильно затруднит, расскажешь хоть приблизительно, как искал? Метод в самых общих чертах.

Добавлено через 7 минут
В слове "ПОЕЗД А" вместо пробела должна быть "К". Видимо в оригинале уже была ошибка.
2
0 / 0 / 0
Регистрация: 29.12.2012
Сообщений: 23
03.01.2013, 19:23  [ТС]
Ребята всем спасибо огромное, выручили.

Добавлено через 1 минуту
А не могли бы сказать, как подобрали ключ? Я только учусь мне интересно.
0
85 / 80 / 15
Регистрация: 25.05.2012
Сообщений: 230
Записей в блоге: 3
03.01.2013, 22:45
Цитата Сообщение от grizlik78 Посмотреть сообщение
Если не сильно затруднит, расскажешь хоть приблизительно, как искал? Метод в самых общих чертах.
Ну он описан на педивикии
в статье "Индекс совпадений".
0
Эксперт С++
 Аватар для grizlik78
2382 / 1666 / 279
Регистрация: 29.05.2011
Сообщений: 3,402
04.01.2013, 02:04
Цитата Сообщение от ostapdzen Посмотреть сообщение
Ну он описан на педивикии
в статье "Индекс совпадений".
Вручную что ль? А то текст кусками
Цитата Сообщение от Дато Гонгадзе Посмотреть сообщение
А не могли бы сказать, как подобрали ключ? Я только учусь мне интересно.
Ну я про метод тоже уже упоминал, даже программу привёл
0
85 / 80 / 15
Регистрация: 25.05.2012
Сообщений: 230
Записей в блоге: 3
04.01.2013, 02:16
Ключ я нашел, а когда проверял, то
текст кусками получился так как я не заморачивался с алфавитом.
(ё есть или нет? ъ? и т.д. взял первый попавшийся.)
Да и тогда не до этого было.

Добавлено через 3 минуты
Цитата Сообщение от ostapdzen Посмотреть сообщение
Да и тогда не до этого было.
...после НГ.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
04.01.2013, 02:16
Помогаю со студенческими работами здесь

DPAPI Windows. Не получается расшифровать строчку
Мое почтение форумчане. Мне была поставлена задача и пришлось впервой столкнуться с технологией DPAPI(виндовая технология шифрования). Я...

Не получается расшифровать, что тут не так?
function shyfr(s:string):string; var shyfrarr:array of string; i,j:Integer; begin...

Пожалуйста, не получается расшифровать, нужно уже завтра
оапяьщрчшучьрщиу_уфаыасщгпуиоба_рлпуняжз_гньрщаучяиыщауньочщахиубрвиуруоа_жяджщщаущжхгобрхауачыжбшщахиукаоиыьяоч_иузьуеьюыгхуыжроч_ржхуеачая...

Не получается расшифровать текстовый список данных с сайта
Есть метод который шифрует и расшифровывает строки: public static string Encrypt(string input) // шифратор текста { if...

Не получается расшифровать ключ для навигационной морской карты s63, зашифрованный blowfish
В кратцe: есть зашифрованный ключ F81AC653B0AB63B0, который зашифрован HW_ID(12345) при помощи blowfish cbc. При расшифровке должен...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru