Visual Basic, .NET, ASP, VBScript
 

   
   
     

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

Страница: 1 |

 

  Вопрос: Алгоритм кодирования. Нужна оптимизация. Добавлено: 07.10.09 00:05  

Автор вопроса:  AWP | Web-сайт: xawp.narod.ru | ICQ: 345685652 
Написал алгоритмик. Нужна помощь по оптимизации скорости.
Function EnCodeTStrong(str As String, K As Single) As String
'''  Функция кодирования в обе стороны EnCodeTStrong
'''  str - Строка кодирования
'''  K - Коэфицент (0 - 1)
Dim ln As Long
Dim N As Long
Dim D As Long
Dim S As String
Dim M As Long
Dim KM As Double
  ln = Len(str)
  For N = 1 To ln Step 1
  
    ' 100 проходов с разной частотой
    KM = Sin(N) * 128
    For M = 2 To 101
      KM = KM + Cos(N / M) * 128
    Next
    D = Asc(Mid$(str, N, 1)) + Int(KM) * K
    
    ' Выполняем если переменная выходит за рамки (0-255)
    If D > 255 Then
      D = D - 256
    Else
      If D < 0 Then D = D + 256
    End If
    
    S = S & Chr$(D)
  Next N
  
EnCodeTStrong = S
End Function

Ответить

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

Номер ответа: 1
Автор ответа:
 Илья



Вопросов: 1
Ответов: 48
 Профиль | | #1 Добавлено: 07.10.09 06:26
Что ты ей кодируешь? Текст?
Функция не работает, в месте
  1. D = Asc(Mid$(str, N, 1)) + Int(KM) * K

происходит переполнение, D не может быть больше 255, а при тексте = "Текст", D = 12821! Надо бы алгоритм перебрать...

Ответить

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



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #2 Добавлено: 07.10.09 07:43
Пожалуйста, скажи мне что это не очередной алгоритм шифрования текста!

Ответить

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



ICQ: 345685652 

Вопросов: 96
Ответов: 1212
 Web-сайт: xawp.narod.ru
 Профиль | | #3
Добавлено: 07.10.09 12:14
Artyom Очередной. =)
Илья K должен быть меньше 0.01
или есть вариант сделать в цикле
  1.     For M = 2 To 99
  2.       KM = KM + Sin(N / M) * 128
  3.       If KM > 255 Then
  4.         KM = KM - 256
  5.       Else
  6.         If KM < 0 Then KM = KM + 256
  7.       End If
  8.     Next

Ответить

Номер ответа: 4
Автор ответа:
 AWP



ICQ: 345685652 

Вопросов: 96
Ответов: 1212
 Web-сайт: xawp.narod.ru
 Профиль | | #4
Добавлено: 07.10.09 12:24
По суте нужно передавать строку в закодированном виде, без ключа.
md5 отпадает: Не раскодировать, долгий.
Можно тупо сжимать текст(Хаффманом или ЛЗВ), но не думаю, что это будет быстрее чем закодировать.

Ответить

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



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #5 Добавлено: 07.10.09 12:29
AWP пишет:
без ключа

Зачем тогда ее кодировать? Что мешает передавать в чистом виде?

Ответить

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



ICQ: 345685652 

Вопросов: 96
Ответов: 1212
 Web-сайт: xawp.narod.ru
 Профиль | | #6
Добавлено: 07.10.09 12:34
Мешает раскодировать неизвестный алгоритм кодирования, поэтому ключ не обязателен.
Я конечно понимаю, что можно вытащить функцию или декомпельнуть и т.д., но если захотят взломать - взломаю.

А передавать в чистом виде, ну это совсем не безопасно.

Вопрос остался открыт:
Нужна помощь по оптимизации скорости.

Ответить

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



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #7 Добавлено: 07.10.09 12:55
Сделай XOR 10
ВОзьми любое симметричное шифрование и забей ключ в коде

Ответить

Номер ответа: 8
Автор ответа:
 Илья



Вопросов: 1
Ответов: 48
 Профиль | | #8 Добавлено: 08.10.09 06:51
Илья K должен быть меньше 0.01

Работает только в 1 направлении, а вообще, даже если оптимизировать код зашифровки\расшифровки, сильного отличия в скорости не будет...
Нужна помощь по оптимизации скорости.

Проект\СвойстваПроекта\Компиляция\Оптимизировать скорость :)

Ответить

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



ICQ: adamis@list.ru 

Вопросов: 153
Ответов: 3632
 Профиль | | #9 Добавлено: 08.10.09 15:34
Изменения действительно будут смешные.

Ответить

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



ICQ: 345685652 

Вопросов: 96
Ответов: 1212
 Web-сайт: xawp.narod.ru
 Профиль | | #10
Добавлено: 08.10.09 16:10
ну я с первоначального вида на 30 процентов по скорости увеличил.

Работает в обе стороны, второй раз нужно К ставить -0.01

Ответить

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



Вопросов: 246
Ответов: 3333
 Web-сайт: смекаешь.рф
 Профиль | | #11
Добавлено: 08.10.09 17:30
Smith пишет:
Изменения действительно будут смешные.

+1 Эта вася была вожна раньше, щас ставь хоть P-Code- без разницы скорость.

Ответить

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



ICQ: adamis@list.ru 

Вопросов: 153
Ответов: 3632
 Профиль | | #12 Добавлено: 08.10.09 22:07
Нет, бывают задачи, которые в нативе быстрее выполняются, но я в последнее время всё в пикод компилю.

Ответить

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



ICQ: adamis@list.ru 

Вопросов: 153
Ответов: 3632
 Профиль | | #13 Добавлено: 08.10.09 23:09
Кстати VBD, сильно занят?
У меня тут алго мизерный, рисует огонь сэтпикселом прям на пикчербоксе, я его в абауте давно юзаю.
Вот он, гад, в нативе намного шустрее рисует, чем в пикоде.
Ты с графикой опыт имеешь, может покажешь, что сделать, чтоб кадр в памяти нарисовать, а потом одной апишкой на пикчер бросить, думаю так в разы быстрее будет.

Ответить

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



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #14
Добавлено: 09.10.09 01:59
Smith, в аудике так рисуются кадры визуализации.
Кстати я тебя вопрос спросил там http://vbnet.ru/forum/show.aspx?id=197165 =)

Ответить

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



Вопросов: 246
Ответов: 3333
 Web-сайт: смекаешь.рф
 Профиль | | #15
Добавлено: 13.10.09 20:26
Ты с графикой опыт имеешь, может покажешь, что сделать, чтоб кадр в памяти нарисовать, а потом одной апишкой на пикчер бросить, думаю так в разы быстрее будет.

В памяти? Ну не знаю, я с памятью не работал. Другое дело, если огонь маленький, ты можешь отрисовывать, например, каждый десятый кадр, а потом AlphaBlend'ить его. Разницы мало какой будет, а вот быстродействие увелчится.

PS. И вообще, если что, в XQR2 вся графика, кроме прозрачных переходов, реализована стандартными функциями: Line, Print, PSet. И все пучком :)

Ответить

Страница: 1 |

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



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