Страница: 1 | 2 |
Вопрос: Помогите с текстовым редактором!!! (часть 3) =)
Добавлено: 15.02.08 13:17
Автор вопроса: Harter
Я зделал очень простой кодер-декоодер...
Но он работает просто ужасно!!!
Вот код:
Option Explicit
'На форме расположенно text,label,label :(
Private Function coder(s As String) As String
Dim i As Integer
Dim b As String
Dim n As String
Dim t As String
Rnd (-5)
For i = 1 To Len(s)
b = Mid$(s, i, 1)
n = Asc(b)
n = n Xor Int(Rnd * 256)
b = Chr$(n)
t = t + b
Next i
coder = t
End Function
Private Sub Command1_Click()
'Кодируем
Dim s As String
s = Text1.Text
Label1.Caption = coder(s)
s = coder(s)
Open "proba" For Binary As #1
Put #1, 1, s
Close #1
End Sub
Private Sub Command2_Click()
'Декодируем
Dim s As String
Dim i As Integer
Dim myarray() As Byte
Dim d As Integer
Open "proba" For Binary As #1
d = LOF(1)
ReDim myarray(d)
For i = 1 To d
Get #1, i, myarray(i)
s = s + Chr$(myarray(i))
Next i
Close #1
Label2.Caption = coder(s)
End Sub
Ответы
Всего ответов: 17
Номер ответа: 1
Автор ответа:
VβÐUηìt
Вопросов: 246
Ответов: 3333
Web-сайт:
Профиль | | #1
Добавлено: 15.02.08 13:40
Либо я тупой, либо как n = n Xor Int(Rnd * 256) можно вообще раскодировать?!
Номер ответа: 2
Автор ответа:
Harter
Вопросов: 32
Ответов: 167
Профиль | | #2
Добавлено: 15.02.08 13:46
Не обижайся, но прога работает
Вот сам попробуй!
Номер ответа: 3
Автор ответа:
Bonapart
ICQ: 175256
Вопросов: 32
Ответов: 108
Web-сайт:
Профиль | | #3
Добавлено: 15.02.08 15:16
n = n Xor Int(Rnd * 256)
нельзя раскодировать в принципе.
то что она у тебя работает показывает что в VB алгорит случайных чисел ещё включать надо...
функцией randomize например
Номер ответа: 4
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #4
Добавлено: 15.02.08 17:38
По сути раскодировать можно без особых проблем, достаточно знать на какой позиции был генератор случайных чисел до начала "шифрования".
Хотя по сути данный код шифрованием не является - зная "магические числа" генератора и тип данных, можно определить возможные начальные значения генератора.
Номер ответа: 5
Автор ответа:
VβÐUηìt
Вопросов: 246
Ответов: 3333
Web-сайт:
Профиль | | #5
Добавлено: 15.02.08 18:47
Вместо Rnd лушче подставь, например, i mod 256. А если уж совсем невтерпежь, генерируй rnd вначале цикла один раз, затем кодируй с ним и закидывай это же число в файл, что бы можно было расшифровать.
Номер ответа: 6
Автор ответа:
Winand
Вопросов: 87
Ответов: 2795
Web-сайт:
Профиль | | #6
Добавлено: 15.02.08 23:41
Кстати, функция "Grab korovan" будет реализована? )
Номер ответа: 7
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #7
Добавлено: 16.02.08 03:35
это не имеет ни какого отношения к шифрованию
http://en.wikipedia.org/wiki/Cryptography
http://en.wikipedia.org/wiki/Advanced_Encryption_Standard
Номер ответа: 8
Автор ответа:
Winand
Вопросов: 87
Ответов: 2795
Web-сайт:
Профиль | | #8
Добавлено: 16.02.08 04:28
Про шифрование автор ничего не спрашивал.
Номер ответа: 9
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #9
Добавлено: 16.02.08 04:58
По сути автор вообще ничего не спрашивал
Номер ответа: 10
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #10
Добавлено: 16.02.08 05:37
Номер ответа: 11
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #11
Добавлено: 16.02.08 05:59
Функция RND из VB6 всегда будет выдавать одинаковую последовательность.
Номер ответа: 12
Автор ответа:
Winand
Вопросов: 87
Ответов: 2795
Web-сайт:
Профиль | | #12
Добавлено: 16.02.08 17:19
Ну раз уж на то пошло, объясните, что за параметр есть у функции Randomize? зачем он?
Номер ответа: 13
Автор ответа:
Harter
Вопросов: 32
Ответов: 167
Профиль | | #13
Добавлено: 16.02.08 17:22
Я лино не сильно представляю RND без RANDOMIZE TIMER в Form Foad'е...
Точно сказать не могу, но когда я делал первую программу (генератор случайных чисел), я использовал этот элемент...
Номер ответа: 14
Автор ответа:
Harter
Вопросов: 32
Ответов: 167
Профиль | | #14
Добавлено: 16.02.08 17:22
Я лино не сильно представляю RND без RANDOMIZE TIMER в Form Foad'е...
Точно сказать не могу, но когда я делал первую программу (генератор случайных чисел), я использовал этот элемент...
Номер ответа: 15
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #15
Добавлено: 16.02.08 18:25
Randomize Statement
Initializes the random-number generator.
Syntax
Randomize [number]
The optional number argument is a Variant or any valid numeric expression.
Remarks
Randomize uses number to initialize the Rnd function's random-number generator, giving it a new seed value. If you omit number, the value returned by the system timer is used as the new seed value.
If Randomize is not used, the Rnd function (with no arguments) uses the same number as a seed the first time it is called, and thereafter uses the last generated number as a seed value.
Note
To repeat sequences of random numbers, call Rnd with a negative argument immediately before using Randomize with a numeric argument. Using Randomize with the same value for number does not repeat the previous sequence.
По сути ясно что разницы между RANDOMIZE TIMER и Randomize нет, так как если аргумент не указан то используется значение таймера.
Остальное написнао довольно туманно, особенно про отрицательные числа.
Единственное что удалось определить - последовательные вызовы Randomize 0 дают одинаковые знчения функции Rnd, любое число отличное от 0 уже уводит генератор.