Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/15: Рейтинг темы: голосов - 15, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 17.10.2012
Сообщений: 3
1

Шифрование алгоритмом моноалфавитной подстановки и Алгоритмом Цезаря

18.10.2012, 00:11. Показов 2864. Ответов 5
Метки нет (Все метки)

Здравствуйте, помогите исправить код чтобы выводилось одинаково зашифрованное сообщение, и методом моноалфавитной подстоновкой и методом цезаря.
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
70
71
72
Public Function MonoAlphCoder(Alph_b As String, Alph_f As String, mess As String) As String
    Dim i As Long, num As Integer, enc_mess As String
    
    For i = 1 To Len(mess)
        For num = 1 To Len(Alph_b)
            If Mid(mess, i, 1) = Mid(Alph_b, num, 1) Then
                enc_mess = enc_mess & Mid(Alph_f, num, 1)
                Exit For
            End If
        Next num
    Next i
    
    MonoAlphCoder = enc_mess
End Function
 
Public Function MonoAlphDecoder(Alph_b As String, Alph_f As String, enc_mess As String) As String
    Dim i As Long, num As Integer, dec_mess As String
    
    For i = 1 To Len(enc_mess)
        For num = 1 To Len(Alph_b)
            If Mid(enc_mess, i, 1) = Mid(Alph_f, num, 1) Then
                dec_mess = dec_mess & Mid(Alph_b, num, 1)
                Exit For
            End If
        Next num
    Next i
    
    MonoAlphDecoder = dec_mess
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)
    'If Abs(key) > N Then key = S * (Abs(key) Mod N)
    
    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
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.10.2012, 00:11
Ответы с готовыми решениями:

Шифрование алгоритмом Цезаря
Появился такой косяк: есть кнопка, шифрующая текст методом Цезаря, но работает она неправильно...

Шифрование алгоритмом RSA
Задается исходная строка и надо зашифровать её по алгоритму RSA Для работы с большими числами...

Шифрование файлов алгоритмом RSA
Алгоритм шифрование написан шифрует пока только числа. Подкиньте идею как шифровать файлы. Я ни как...

Шифрование файлов AES алгоритмом
Здравствуйте, не могу решить проблему с дешифровкой файлов, при дешифровке строки написанные...

5
Телекомпания ВИD
1360 / 111 / 19
Регистрация: 14.10.2012
Сообщений: 100
18.10.2012, 13:37 2
Ничего править не нужно в алгоритмах, они работают. Вот одинаковый вывод:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
Sub dfg()
MsgBox "afd"
enc1 = MonoAlphCoder("abcdefghijklmnopqrstyvwxyz", "qrstyvwxyzabcdefghijklmnop", "afd")
MsgBox enc1
dec1 = MonoAlphDecoder("abcdefghijklmnopqrstyvwxyz", "qrstyvwxyzabcdefghijklmnop", CStr(enc1))
MsgBox dec1
enc2 = CaesarCoder("abcdefghijklmnopqrstyvwxyz", "afd", 16)
MsgBox enc2
dec2 = CaesarDecoder("abcdefghijklmnopqrstyvwxyz", CStr(enc2), 16)
MsgBox dec2
End Sub
В моноалфавитном - строка заменяемого алфавита смещена на 16 позиций. Соответственно, в цезаре - ключ смещения тоже на 16 позиций
1
0 / 0 / 0
Регистрация: 17.10.2012
Сообщений: 3
18.10.2012, 18:45  [ТС] 3
Добрый вечер, Большое спасибо, теперь как я понимаю в цезаре в ключе надо ставить 16 и все?
0
Телекомпания ВИD
1360 / 111 / 19
Регистрация: 14.10.2012
Сообщений: 100
18.10.2012, 18:55 4
Ключ какой хотите ставьте, но чтобы смещение 2-го алфавита в моноалфавитной совпадало с ключом Цезаря.

Например, ключ Цезаря=15, тогда 2 алфавит в моноалфавитной будет:
pqrstyvwxyzabcdefghijklmno (т.е. pqrstyvwxyz - 26-15 символов, abcdefghijklmno - до 15 символов )

Ключ Цезаря - это и есть попросту смещение на заданное число символов.
1
6644 / 1511 / 169
Регистрация: 09.01.2010
Сообщений: 4,298
18.10.2012, 20:41 5
если оба метода одинаково работают и метод Цезаря суть частный случай моноалфавитной подстановки, то какой смысл в кодинге обоих случаев / это же по сути одно и то же/
0
0 / 0 / 0
Регистрация: 17.10.2012
Сообщений: 3
18.10.2012, 21:15  [ТС] 6
просто есть программа и нормально шифрует но надо что бы зашифрованые тексты были одинаковыми без вставки алфавита в ручную.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.10.2012, 21:15

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Шифрование/дешифрование алгоритмом RSA
Надо написать итоговую работу по СИ уровень знаний ниже среднего.При этом надо использовать...

Шифрование данных AES алгоритмом
Здравствуйте! Уже второй день не вылажу с интернета, все облазил - не могу найти реализацию...

Шифрование текста алгоритмом RSA
Всем привет. Помогите пожауйста с реализацией шифрования в Delphi, с использванием алгоритма RSA...

Шифрование пароля алгоритмом md5 затрудняет выборку из БД
Как шифровать пароль в мд 5 если после зашифровки выборка из базы не происходит? ...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.