Форум программистов, компьютерный форум, киберфорум
QBasic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
Регистрация: 23.10.2013
Сообщений: 5,076
Записей в блоге: 8

Перестановочный шифр

26.03.2017, 09:23. Показов 2374. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Перестановочных шифров много. Это один из наиболее
простых. Суть алгоритма в том, что сначала пишутся
символы стоящие на нечетных позициях, потом на четных.
...
Вопросы
1. Как упростить код, приведенный ТС?
2. Как будет выглядеть программа дешифровки?

QBasic/QuickBASIC
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
REM
REM Перестановочный шифр
REM
 
CLS
CONST p = " "
DIM T AS STRING
DIM S AS STRING
DIM u AS STRING
T = "1234567890098765432"
 
IF LEN(T) MOD 2 THEN T = T + p
S = T
 
k = LEN(T) / 2
 
FOR i = 1 TO LEN(T)
   u = MID$(T, i, 1)
   IF i MOD 2 THEN
      j = (i + 1) / 2
      MID$(S, j, 1) = u
   ELSE
      j = k + i / 2
      MID$(S, j, 1) = u
   END IF
NEXT
 
PRINT T
PRINT S
END
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
26.03.2017, 09:23
Ответы с готовыми решениями:

Написать программу Перестановочный шифр с ключевым словом
Помогите написать программу по VBA. На "WORD или Ексель" На Ваше усмотрение . Тема "Перестановочный шифр с ключевым словом."....

Шифр многоалфавитной замены (Вижнера) и шифр алфавитной замены
Напишите пожалуйста 2 программы в VB шифр многоалфавитной замены (Вижнера) и шифр алфавитной замены;) ОЧЕНЬ НАДО!!!;((((:(

Перестановочный шифр
Подскажите пожалуйста, как перебрать порядок цифр ключа(4ххх5 (известны 2 цифры ключа, остается перебрать 3!(6 вариантов))), и подключить...

6
6180 / 945 / 313
Регистрация: 25.02.2011
Сообщений: 1,381
Записей в блоге: 1
26.03.2017, 09:32
Лучший ответ Сообщение было отмечено echs как решение

Решение

Делал кодер и декодер на VBA: Написать программу Перестановочный шифр с ключевым словом
Под QB нужно будет немного изменить код (функции Join в QB нет)
1
Регистрация: 23.10.2013
Сообщений: 5,076
Записей в блоге: 8
26.03.2017, 09:39  [ТС]
m-ch
Спасибо! Вы привели классный пример. Кстати его
нетрудно реализовать на QBasic. Функцию Join()
написать несложно, да на QB своих функций достаточно...
0
6180 / 945 / 313
Регистрация: 25.02.2011
Сообщений: 1,381
Записей в блоге: 1
26.03.2017, 09:49
Лучший ответ Сообщение было отмечено echs как решение

Решение

Цитата Сообщение от echs Посмотреть сообщение
Кстати его
нетрудно реализовать на QBasic. Функцию Join() написать несложно
Функцию Join не нужно переписывать в QB (т.к. у нее больше функционала), здесь достаточно циклом пройти по массиву и составить текстовую строку.
Думаю, что под QB будет легко адаптировать
1
Регистрация: 23.10.2013
Сообщений: 5,076
Записей в блоге: 8
26.03.2017, 09:53  [ТС]
m-ch
Я тоже так подумал. Склеить массив в строку достаточно
просто. Взять цикл и операция конкатенации + или &.
0
6180 / 945 / 313
Регистрация: 25.02.2011
Сообщений: 1,381
Записей в блоге: 1
26.03.2017, 10:16
Лучший ответ Сообщение было отмечено echs как решение

Решение

Переписал под Freebasic
QBasic/QuickBASIC
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
DECLARE FUNCTION MyEncode(txt AS STRING, KEY AS STRING) AS STRING
DECLARE FUNCTION MyDecode(txt AS STRING, KEY AS STRING) AS STRING
 
DIM txt AS STRING, KEY AS STRING, txt2 AS STRING
txt = "1234567890098654321"
 
KEY = "text"
txt2 = MyEncode(txt, KEY)
PRINT txt, KEY
PRINT txt2
PRINT MyDecode(txt2, KEY)
PRINT
 
KEY = "123456"
txt2 = MyEncode(txt, KEY)
PRINT txt, KEY
PRINT txt2
PRINT MyDecode(txt2, KEY)
PRINT
 
'Sleep
 
FUNCTION MyEncode(txt AS STRING, KEY AS STRING) AS STRING
    DIM i AS LONG, j AS LONG, n AS LONG, m AS LONG, l AS LONG
    DIM s1 AS STRING, s2 AS STRING, outTxt AS STRING
    n = LEN(KEY)
    IF n = 0 THEN EXIT FUNCTION
    l = LEN(txt)
    m = -INT(-l / n)
    
    DIM nKeys(1 TO n) AS LONG
    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
    
    DIM aOut(1 TO n * m) AS STRING
    FOR i = 1 TO LEN(txt)
        aOut(nKeys((i - 1) MOD n + 1) * m + (i - 1) \ n - m + 1) = MID$(txt, i, 1)
    NEXT i
    FOR i = 1 TO n * m
         outTxt = outTxt + aOut(i)
    NEXT i
    MyEncode = outTxt
END FUNCTION
 
FUNCTION MyDecode(txt AS STRING, KEY AS STRING) AS STRING
    DIM i AS LONG, j AS LONG, d AS LONG, k AS LONG, n AS LONG, m AS LONG
    DIM l AS LONG, nTmp AS LONG, sTmp AS STRING, outTxt AS STRING
    n = LEN(KEY)
    IF n = 0 THEN EXIT FUNCTION
    l = LEN(txt)
    m = -INT(-l / n)
    d = l MOD n
 
    DIM nKeys(1 TO n)  AS LONG, sKeys(1 TO n) AS STRING
    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
    
    DIM aOut(1 TO n, 1 TO m) AS STRING
    FOR i = 1 TO n
        FOR j = 1 TO m + (nKeys(i) > d AND d > 0)
            k = k + 1
            aOut(nKeys(i), j) = MID$(txt, k, 1)
    NEXT j, i
    FOR j = 1 TO m
        FOR i = 1 TO n
            outTxt = outTxt + aOut(i, j)
    NEXT i, j
    MyDecode = outTxt
END FUNCTION
Не могу проверить в QB, нужно в декларировании функций по другому указывать их тип
1
Регистрация: 23.10.2013
Сообщений: 5,076
Записей в блоге: 8
26.03.2017, 11:44  [ТС]
m-ch
Огромное вам спасибо! В QB это уже просто.
Тип функции задаётся символами %, &, !, #, $
(то есть целый, целый длинный, вещественный,
вещественный двойной и строковый). Эти символы
добавляются к имени функции при декларации.
например
DECLARE FUNCTION f$(x!) - строковая функция f(x)
от вещественного переменного.
СПАСИБО ВАМ ЕЩЁ РАЗ ЗА КОД !!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
26.03.2017, 11:44
Помогаю со студенческими работами здесь

перестановочный шифр
Доброе время суток! Помогите написать программу на Delphi используя шифр перестановки, например ступенчатый шифр: вводим: go to home ...

Перестановочный шифр.
На основе этого мне нужно написать рабочий код на С++. Материал прочитан на несколько раз и уже выдвинуто множество идей, код пишется, но...

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

Столбцевой перестановочный шифр
Здравствуйте, помогите, пожалуйста. Нужно реализовать простой столбцевой перестановочный шифр. ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ВЫЧИСЛИТЕЛЬНОЙ...

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


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru