Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/13: Рейтинг темы: голосов - 13, средняя оценка - 4.92
 Аватар для AlexKuchanskiy
1 / 1 / 1
Регистрация: 13.02.2013
Сообщений: 36

Шифрование строки смещением

21.03.2013, 02:16. Показов 2817. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Зашифровать введенную с клавиатуры строку, поменяв местами первый символ со вторым, третий с четвертым и т. д. Затем провести дополнительную шифровку результата смещением кода. Провести дешифровку.

Пробовал через Replace, но возникли проблемы с дешифровкой. И немного не разобрался со смещение кода.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
21.03.2013, 02:16
Ответы с готовыми решениями:

Шифрование и дешифрование текстов одноалфавитным методом с задаваемым смещением (от 2 до 20)
Разработать программу шифрования и дешифрования текстов реализующие следующий метод: Одноалфавитный метод с задаваемым смещением (от 2 до...

Удаление строки из матрицы со смещением
Дана матрица 6х4. Создана статически. Вычеркнуть (то есть переписать данные циклически вперед) рядок с заданным номером (номер задает...

Переписать строки из одного файла во второй со смещением
Задано натуральное число k, символьный файл g и текстовый файл f. Файл g содержит 30 слов, каждое из которых будем называть ключевым....

7
es geht mir gut
 Аватар для SoftIce
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
21.03.2013, 07:36
Функции шифрования и дешифрования по методу Цезаря писал не я.
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
Option Explicit
Option Compare Text
Const AlfaBet As String = "абвгдеёжзийклмнопрстухцчшщъыьэюя" & _
                          "abcdefghijklmnopqrstuvwxyz" & _
                          "1234567890"
                          
Sub Command1_Click()
  Dim i As Long, sIn As String, sOut As String
  Dim s1 As String, s2 As String, s3 As String
    sIn = InputBox("Введите строку", "Ввод данных", "1234567890")
    s1 = ChangeLetters(sIn)
    s2 = CaesarCoder(AlfaBet, s1, 7)     ' cмещение - 7
    s3 = CaesarDecoder(AlfaBet, s2, 7)
    sOut = ChangeLetters(s3)
    MsgBox "Введённая строка:   " & sIn & vbCrLf & _
           "Строка с заменой мест:   " & s1 & vbCrLf & _
           "Кодированная смещением:   " & s2 & vbCrLf & _
           "Декодированная строка:   " & s3 & vbCrLf & _
           "Восстановленная строка:   " & sOut
End Sub
 
Function ChangeLetters(ByVal S As String) As String
    Dim st As String, i As Long
    For i = 1 To Len(S) Step 2
              st = st & Mid(S, i + 1, 1) & Mid(S, i, 1)
    Next i
    ChangeLetters = st
End Function
 
Public Function CaesarCoder(Alph_b As String, mess As String, ByVal key As Integer, Optional Alph_f As String) As String
    Dim i As Long, Cx As Integer, N As Integer, enc_mess As String, S As Integer
    
    N = Len(Alph_b)
    S = Sgn(key)
    
    For i = 0 To N
        Alph_f = Alph_f & Mid(Alph_b, (N + i + key) Mod N + 1, 1)
    Next i
    
    For i = 1 To Len(mess)
        For Cx = 0 To N - 1
            If (Mid(mess, i, 1) = Mid(Alph_b, Cx + 1, 1)) Then
                enc_mess = enc_mess & Mid(Alph_b, (N + Cx + key) Mod N + 1, 1)
                Exit For
            End If
        Next Cx
    Next i
    
    CaesarCoder = enc_mess
End Function
 
Public Function CaesarDecoder(Alph_b As String, enc_mess As String, ByVal key As Integer) As String
    Dim i As Long, Cy As Integer, N As Integer, dec_mess As String, S As Integer
    
    N = Len(Alph_b)
    S = Sgn(key)
    If Abs(key) > N Then key = S * (Abs(key) Mod N)
    
    For i = 1 To Len(enc_mess)
        For Cy = 0 To N - 1
            If (Mid(enc_mess, i, 1) = Mid(Alph_b, Cy + 1, 1)) Then
                dec_mess = dec_mess & Mid(Alph_b, (N + Cy - key) Mod N + 1, 1)
                Exit For
            End If
        Next Cy
    Next i
    
    CaesarDecoder = dec_mess
End Function
Добавлено через 23 минуты
В код вкралась досадная ошибка.
Её сможет найти даже первоклассник, поэтому не буду поправлять
Со строчными-прописными буквами, надеюсь, сообразите как поступить...
2
 Аватар для Апострофф
9908 / 3924 / 742
Регистрация: 11.10.2011
Сообщений: 5,904
21.03.2013, 07:51
Лучший ответ Сообщение было отмечено как решение

Решение

Попробуйте -
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
Option Explicit
 
Function rep(S As String) As String
Dim b() As Byte
Dim bb As Byte
Dim i As Long
b = S
For i = 0 To UBound(b) - 2 Step 4
  bb = b(i)
  b(i) = b(i + 2)
  b(i + 2) = bb
Next i
rep = b
End Function
 
Function Shift(S As String, n As Integer) As String
Dim b() As Byte
Dim i As Long
b = S
For i = 0 To UBound(b) Step 2
  b(i) = (n + b(i)) And 255
Next i
Shift = b
End Function
 
Sub Example()
Dim S As String
'шифруем
S = "ШиФр"
S = rep(S)
S = Shift(S, 15)
MsgBox S
'дешифруем
S = Shift(S, -15)
S = rep(S)
MsgBox S
End Sub
3
es geht mir gut
 Аватар для SoftIce
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
21.03.2013, 08:09
Цитата Сообщение от Апострофф Посмотреть сообщение
b(i) = (n + b(i)) And 255
0
 Аватар для AlexKuchanskiy
1 / 1 / 1
Регистрация: 13.02.2013
Сообщений: 36
21.03.2013, 18:24  [ТС]
Цитата Сообщение от SoftIce Посмотреть сообщение
В код вкралась досадная ошибка.
Её сможет найти даже первоклассник, поэтому не буду поправлять
Вы об отсутствии пробела в алфавите?)
0
bmstu-team
 Аватар для antonboom
301 / 136 / 91
Регистрация: 10.01.2012
Сообщений: 420
Записей в блоге: 10
21.03.2013, 23:08
скорее буквы ф?)
0
 Аватар для AlexKuchanskiy
1 / 1 / 1
Регистрация: 13.02.2013
Сообщений: 36
22.03.2013, 10:52  [ТС]
уже 2 ошибки
а я даже внимание не обратил на ф)

но без пробела в алфавите неправильно возвращает восстановленную строку.
0
es geht mir gut
 Аватар для SoftIce
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
22.03.2013, 12:31
Да, в алфавите должен быть весь набор символов, имеющихся в строке.

Конечно вместо алфавита можно использовать саму строку но это снизит стойкость шифра
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
22.03.2013, 12:31
Помогаю со студенческими работами здесь

Даты сравнить с заданными, и если они не входят в интервал, удалить строки со смещением вверх.
Добрый день! Уважаемые Гуру VBA, у меня возник вопрос,так как с VBA никогда раньше не сталкивался. Суть вопроса: Имеется столбец с...

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

Шифрование строки
Нужен алгоритм шифрования строки - из обычной строки в абракадабру из буков и цифер и обратно. Никаких символов !! Порылся в инете нашел...

Удаление и шифрование строки
Разработать программу (визуальное приложение) на языке Object Pascal в среде Delphi, которая позволяет вводить строку типа String в...

Шифрование строки по паролю
В продолжение этой темы. Всем привет. Выбрал время для дальнейших поползновений в неблагодарном деле изучения C++ :) Ну и очередной...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru