Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 | 2 |

 

  Вопрос: Алгоритм шифрования Добавлено: 16.10.06 21:53  

Автор вопроса:  BuPTy03
В общем задался я целью зашифровать строку, состоящую из цифр. Шифровать решил заглавными латинскими.
В общем, решил реализовать это следующим образом: к значению цифры и её позиции прибавляется 65 (Asc("A")). Если получается значение, превышающее 90 (Asc("Z")), то снова перескакивает на A.
Зашифровать строку мне удалось, а вот с расшифровкой ерунда какая-то выходит.
Вот код:
Private Sub Command1_Click()
Text2 = ""
For i = 1 To Len(Text1)
 Text2 = Text2 + Chr(65 + Val(Mid(Text1, i, 1) + i - 1) Mod 26)
Next i
End Sub
Private Sub Command2_Click()
Text3 = ""
For i = 1 To Len(Text2)
 Text3 = Text3 + Trim(Str(Asc(Mid(Text2, i, 1)) - 65 - (i - 1) Mod 26))
Next i
End Sub

На форме 3 текстбокса и 2 кнопки. При нажатии на первую строка из первого текста шифруется и шифр помещается во второй текстбокс. При нажатии на вторую кнопку текст из второго текстбокса должен расшифровываться и помещаться в третий текстбокс (тут у меня косяк - не правильно расшифровывается).

Чтобы был нагляднее алгоритм шифрования вот как будет выглядеть результат (вверху - позиция символа в строке, справа по вертикали - сам символ):
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
0 A B C D E F G H I J K L M N O P Q R S T U V W Z Y Z A
1 B C D E F G H I J K L M N O P Q R S T U V W Z Y Z A B
2 C D E F G H I J K L M N O P Q R S T U V W Z Y Z A B C
3 D E F G H I J K L M N O P Q R S T U V W Z Y Z A B C D
4 E F G H I J K L M N O P Q R S T U V W Z Y Z A B C D E
5 F G H I J K L M N O P Q R S T U V W Z Y Z A B C D E F
6 G H I J K L M N O P Q R S T U V W Z Y Z A B C D E F G
7 H I J K L M N O P Q R S T U V W Z Y Z A B C D E F G H
8 I J K L M N O P Q R S T U V W Z Y Z A B C D E F G H I
9 J K L M N O P Q R S T U V W Z Y Z A B C D E F G H I J


Помогите, плз, разобраться с алгоритмом расшифровки.
Заранее спасибо.

Ответить

  Ответы Всего ответов: 16  

Номер ответа: 1
Автор ответа:
 BuPTy03



Вопросов: 2
Ответов: 4
 Профиль | | #1 Добавлено: 16.10.06 21:56
Тут принцип шифрования криво отобразился...
Я текстовый файлик залил на http://slil.ru/23259641

Ответить

Номер ответа: 2
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #2 Добавлено: 16.10.06 22:21
эээээээ.... это ты называешь шифрованием?

Если правильно помню, это называется защитой, основаной на неизвестности, т.е. на основе того что злоумышленнику не известен алгоритм шифрования, IP-адрес, порт и т.п.

В принципе лучше вместо шифрования переименовать текстовый файл во что-то вроде:
ЭТОТ_ФАЙЛ_НИКОМУ_НИ_ОТКРЫВАТЬ_#ЛЯ_ПОТОМУ_ЧТО_ПРИБЬЮ.txt
По крайней мере времени будет тратиться меньше да и код для этого сразу без ошибок написать можно.

PS Нужно использовать стандартные алгоритмы шифрования, которые используют все. И надежнее, и гемороя меньше.

К примеру - алгоритм AES, который, если не ошибаюсь, принят даже в правительстве США.

Проще всего юзать это через CryptoAPI, или же, если используешь дотнет, то System.Security.Cryptography

Ответить

Номер ответа: 3
Автор ответа:
 BuPTy03



Вопросов: 2
Ответов: 4
 Профиль | | #3 Добавлено: 16.10.06 22:46
Ну называйте как хотите.
Мне честно говоря, всё равно, как шифровать, просто мне интересна сама задача. Как сделать так, чтобы получилось. Я полчаса соображал, как заставить ВБ зашифровать строку нужным мне образом, что мне удалось, и ещё порядка трёх часов думал как его восстановить из шифра, в чём потерпел фиаско. Я уже придумал ещё 2 способа зашифровать строку, но тут просто спортивный интерес. Должен же быть способ это реализовать?

А текстовый файл не при чём - он просто показывает вам что должно на что заменяться. Он в комплекте с прогой не пойдёт )

Ответить

Номер ответа: 4
Автор ответа:
 Ra$cal



ICQ: 8068014 

Вопросов: 18
Ответов: 817
 Web-сайт: www.rascalspb.narod.ru
 Профиль | | #4
Добавлено: 17.10.06 08:28
Если получается значение, превышающее 90 (Asc("Z";)), то снова перескакивает на A.

расскажи, как программе понять, А это перебор от Z или это именно А? У тебя должно стоять ограничение на число символов за один проход обрабатываемых если в таком виде оставишь код. Если хочешь исправить - придётся отказаться от округления. Как вариант шифротекст пусть будет тоже цифрами. Не надо mod 26. Просто бери и перегоняй число в строку. Я помнится сделал забавный шифровщик - у меня символы расшифровывались с конца наперёд. Причём расшифрованый символ становился ключём для следующего. И если в одном ошибка, все последующие верными уже не будут. Вообще вариантов оч много. Деразай

Ответить

Номер ответа: 5
Автор ответа:
 VβÐUηìt



Вопросов: 246
Ответов: 3333
 Web-сайт: смекаешь.рф
 Профиль | | #5
Добавлено: 17.10.06 08:39
Забей и юзай Skip-коды.

Ответить

Номер ответа: 6
Автор ответа:
 Arseny



ICQ: 298826769 

Вопросов: 53
Ответов: 1732
 Профиль | | #6 Добавлено: 17.10.06 18:09
MD5! Даже сам расшифровать не сможешь! :)))
Расшифровать можно только зная заведомо правильный пароль. Примеры на форуме.

Ответить

Номер ответа: 7
Автор ответа:
 Ra$cal



ICQ: 8068014 

Вопросов: 18
Ответов: 817
 Web-сайт: www.rascalspb.narod.ru
 Профиль | | #7
Добавлено: 17.10.06 18:35
2Arseny
LOLOLOLOLOL. MD5 это хеш. Надеюсь, ты знаешь в чём суть хешей?

Ответить

Номер ответа: 8
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #8 Добавлено: 17.10.06 18:41
Забей и юзай Skip-коды.

Забей и юзай AES

Ответить

Номер ответа: 9
Автор ответа:
 LamerOnLine



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #9 Добавлено: 17.10.06 19:07
MD5 это хеш.

Ну дык он его потом подбирать будет. Долго что ли :))
Чел прикольнулся явно. Пжалуйста, пример расшифровки пароля из NTLM хэша в студию!

Ответить

Номер ответа: 10
Автор ответа:
 BuPTy03



Вопросов: 2
Ответов: 4
 Профиль | | #10 Добавлено: 17.10.06 21:27
как программе понять, А это перебор от Z или это именно А?

Знал бы - не задавал бы вопроса )
У тебя должно стоять ограничение на число символов за один проход обрабатываемых если в таком виде оставишь код.

Не понял...
У меня обрабатывает по одному символу и так.
Не надо mod 26. Просто бери и перегоняй число в строку.

А смысл перегона в строку? И как я найду окончание алфавита без MOD?
Вообще вариантов оч много. Деразай

Да я уже тоже придумал такой способ (следующий символ шифруется предыдущим), только я уже писал - тут спортивный интерес. Как должен выглядеть алгоритм расшифровки именно этого способа?

Ответить

Номер ответа: 11
Автор ответа:
 Ra$cal



ICQ: 8068014 

Вопросов: 18
Ответов: 817
 Web-сайт: www.rascalspb.narod.ru
 Профиль | | #11
Добавлено: 17.10.06 22:46
Код писать не буду, пробуй понять.
Знал бы - не задавал бы вопроса )

Дык в этои фишка - понять, где ошибка. Так как ты используешь для кодирования позицию символа, причём прибавляя, то автоматом получается возможность переполнения. То что ты округляешь после Z до A. Это и есть причина ошибки. Ты должен что-то менять. Просто это не заставишь работать. Смотри, у тебя всего 26 символов. Это предельное число. У тебя
Asc(Mid(Text2, i, 1)) - 65
Здесь, когда по второму кругу идёшь, результат получится очмаленький, ибо символ будет A, после - 65 = 0. дальше ещё вычиать, поэтому и баг. Тебе надо на вход ставить ограничитель. За вызов обрабатывать не более чем доступно. И так блоками. У меня бага была когда RC4 использовал. Там пришлось разбивать на блоки. У тя та же фигня должна быть

Ответить

Номер ответа: 12
Автор ответа:
 BuPTy03



Вопросов: 2
Ответов: 4
 Профиль | | #12 Добавлено: 18.10.06 01:39
В общем, тем кто сможет уложить алгоритм расшифровки в одну строку в цикле - мегареспект )

Ответить

Номер ответа: 13
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #13 Добавлено: 08.04.07 23:48
тебе же сказали - юзай AES

Ответить

Номер ответа: 14
Автор ответа:
 AgentFire



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #14 Добавлено: 08.04.07 23:57
Верно сказали. Advanced Encryption System тут как раз в пору. Я не понял, почему люди не прислушиваются к мнению профи типа Бранда? Вам решение предлагают, чтобы вы заново клавиатуру не изобретали, а вы..

Ответить

Номер ответа: 15
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #15 Добавлено: 09.04.07 00:50
а я потом флудер?? :)))) Флудер не тот кто поддерживает флуд, а тот, кто его начинает (с) :))

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам