Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
0 / 0 / 0
Регистрация: 08.12.2014
Сообщений: 91

Написать программу Перестановочный шифр с ключевым словом

02.02.2015, 16:16. Показов 2268. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите написать программу по VBA. На "WORD или Ексель" На Ваше усмотрение .
Тема "Перестановочный шифр с ключевым словом.". Нужно сделать типа форму с 3 -кнопками , на 1 кнопки при нажатие выходило окно сообщение куда можно писать любые слова.
В 2 кнопке "Шифрование" - эти же слова из 1 кнопки что бы он зашифровал и прежде когда будет шифроваться что бы он попросил ключевое слово и когда ключевое слово будет правильно он "зашифрует текст который я вводил" и дал результат виде сообщение .
3 кнопка Дешифрация , этого же зашифрованного окно сообщение.
Пожалуйста нужна ваша помощь, ну очень нужна.
Огромное спасибо заранее!!!
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
02.02.2015, 16:16
Ответы с готовыми решениями:

Перестановочный шифр с ключевым словом
Здравствуйте, помогите, пожалуйста, написать программу : Перестановочный шифр с ключевым словом. Открытый текст: Прикладная математика ...

Перестановочный шифр с ключевым словом
Здравствуйте, помогите, пожалуйста, реализовать шифр. Перестановочный шифр с ключевым словом. Открытый текст: Прикладная...

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

3
6180 / 945 / 313
Регистрация: 25.02.2011
Сообщений: 1,381
Записей в блоге: 1
02.02.2015, 21:50
Лучший ответ Сообщение было отмечено asset01 как решение

Решение

Кнопочки лень рисовать, сделал функции

Visual Basic
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
Function MyEncode$(txt$, key$)
    Dim i&, j&, n&, m&, l&, s1$, s2$
    n = Len(key) 'длина ключа
    If n = 0 Then Exit Function 'если ключ нулевой длины, то выходим из функции
    l = Len(txt)
    m = -Int(-l / n)
    
    ReDim nKeys&(1 To n)
    For i = 1 To n 'определяем последовательность столбцов по ключу
        s1 = Mid$(key, i, 1)
        For j = 1 To n
            s2 = Mid$(key, j, 1)
            If s1 > s2 Or (s1 = s2 And j <= i) Then nKeys(i) = nKeys(i) + 1
    Next j, i
    
    ReDim out$(1 To n * m)
    For i = 1 To Len(txt) 'шифруем строку
        out(nKeys((i - 1) Mod n + 1) * m + (i - 1) \ n - m + 1) = Mid(txt, i, 1)
    Next i
    MyEncode = Join(out, "")
End Function
 
Function MyDecode$(txt$, key$)
    Dim i&, j&, d&, k&, n&, m&, l&, nTmp&, sTmp$, outTxt$
    n = Len(key) 'длина ключа
    If n = 0 Then Exit Function 'если ключ нулевой длины, то выходим из функции
    l = Len(txt)
    m = -Int(-l / n)
    d = l Mod n
 
    ReDim nKeys&(1 To n), sKeys(1 To n)
    For i = 1 To n 'определяем последовательность столбцов по ключу
        nKeys(i) = i
        sKeys(i) = Mid$(key, i, 1)
        For j = 1 To i - 1
            If sKeys(i) < sKeys(j) Then
                sTmp = sKeys(i): sKeys(i) = sKeys(j): sKeys(j) = sTmp
                nTmp = nKeys(i): nKeys(i) = nKeys(j): nKeys(j) = nTmp
            End If
    Next j, i
    
    ReDim out$(1 To n, 1 To m)
    For i = 1 To n 'дешифруем строку
        For j = 1 To m + (nKeys(i) > d And d > 0)
            k = k + 1
            out(nKeys(i), j) = Mid$(txt, k, 1)
    Next j, i
    For j = 1 To m
        For i = 1 To n
            outTxt = outTxt & out(i, j)
    Next i, j
    MyDecode = outTxt
End Function
Вложения
Тип файла: xls Coder.xls (44.0 Кб, 25 просмотров)
1
0 / 0 / 0
Регистрация: 08.12.2014
Сообщений: 91
03.02.2015, 20:21  [ТС]
Все работает шикарно!
Я вот хотел спросить.
Что этот код означает?
Visual Basic
1
2
3
4
For i = 1 To Len(txt) 'шифруем строку
out(nKeys((i - 1) Mod n + 1) * m + (i - 1) \ n - m + 1) = Mid(txt, i, 1)
 Next i
MyEncode = Join(out, "")
Я просто не все коды понял!
0
6180 / 945 / 313
Регистрация: 25.02.2011
Сообщений: 1,381
Записей в блоге: 1
04.02.2015, 08:25
Что конкретно не понятно в данном коде?
Запускаем цикл по размеру текстовой строки, вычисляем куда очередная буква должна переставиться в зависимости от ключа и заносим ее в массив out() на нужное место.
Функция Join "склеивает" полученный массив в строковое значение

А остальной код понятен?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
04.02.2015, 08:25
Помогаю со студенческими работами здесь

Шифр Цезаря с ключевым словом
Как можно сделать это:&quot;Выписывается алфавит, а под ним, начиная с k-й позиции, ключевое слово. Оставшиеся буквы записываются в алфавитном...

Шифр цезаря с ключевым словом
Помогите реализовать программу,пожалуйста? Процедур шифрования и расшифрования с использованием шифра Цезаря при вводе с клавиатуры ключа и...

Шифр цезаря с ключевым словом
Здравствуйте. Мне необходимо реализовать программу дешифровки цезаря с ключевым словом. Я использую метод частотного анализа, и проверки...

Шифр Цезаря с ключевым словом
Не получается простая задачка. Вот сама задача: Задача 3. «Большой секрет» (20 баллов) Вам в руки попала секретная переписка,...

Шифр Цезаря с ключевым словом
помогите разобраться с программой : программа должна быть написана по формуле E(ti)=(a*ti+bi) mod ,i=0,n-1 a-1 E(ti)=(ti+a-1 bi)mod m ...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru