Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.12.2011, 20:06   #1
Skolos
Пользователь
 
Регистрация: 09.12.2011
Сообщений: 36
По умолчанию Кодировка данных.

Всем доброе время суток. По ходу учебы возник вопрос. У препода есть програма тестер. Вопросы в нем записуются в файле с расширением *.zv Возможно ктото сталкивался с таким расширением? Или же, напишите пожалуйста какие есть известные методы шифрования. Хочу попробовать разкодировать даный файл.
P.S. Даный тестер был дипломной работой одного бывшего студента.
Skolos вне форума Ответить с цитированием
Старый 26.12.2011, 20:28   #2
Camaro Chevelle
Форумчанин
 
Регистрация: 05.11.2011
Сообщений: 102
По умолчанию

один из моих любимых алгоритмов
Код:
Option Explicit
Private mstrKey As String, mstrText As String
Public Property Let Keystring(strKey As String)
  mstrKey = strKey
  Initialize
End Property
Public Property Let Text(strtext As String)
  mstrText = strtext
End Property
Public Property Get Text() As String
  Text = mstrText
End Property
Public Sub DoXor()
Dim lngc As Long, intb As Long, lngn As Long
For lngn = 1 To Len(mstrText)
  lngc = Asc(Mid(mstrText, lngn, 1))
  intb = Int(Rnd * 256)
  Mid(mstrText, lngn, 1) = Chr(lngc Xor intb)
Next lngn
End Sub
Public Sub Stretch()
Dim lngc As Long, lngn As Long, lngj As Long, lngk As Long, lnga As Long, strb As String
lnga = Len(mstrText)
strb = Space(lnga + (lnga + 2) \ 3)
For lngn = 1 To lnga
  lngc = Asc(Mid(mstrText, lngn, 1))
  lngj = lngj + 1
  Mid(strb, lngj, 1) = Chr((lngc And 63) + 59)
  Select Case lngn Mod 3
    Case 1: lngk = lngk Or ((lngc \ 64) * 16)
    Case 2: lngk = lngk Or ((lngc \ 64) * 4)
    Case 0: lngk = lngk Or (lngc \ 64)
      lngj = lngj + 1
      Mid(strb, lngj, 1) = Chr(lngk + 59)
      lngk = 0
  End Select
Next lngn
If lnga Mod 3 Then
  lngj = lngj + 1
  Mid(strb, lngj, 1) = Chr(lngk + 59)
End If
mstrText = strb
End Sub
Public Sub Shrink()
Dim lngc As Long, lngd As Long, lnge As Long, lnga As Long, lngb As Long, _
  lngn As Long, lngj As Long, lngk As Long, strb As String
lnga = Len(mstrText)
lngb = lnga - 1 - (lnga - 1) \ 4
strb = Space(lngb)
For lngn = 1 To lngb
  lngj = lngj + 1
  lngc = Asc(Mid(mstrText, lngj, 1)) - 59
  Select Case lngn Mod 3
    Case 1
      lngk = lngk + 4
      If lngk > lnga Then lngk = lnga
      lnge = Asc(Mid(mstrText, lngk, 1)) - 59
      lngd = ((lnge \ 16) And 3) * 64
    Case 2
      lngd = ((lnge \ 4) And 3) * 64
    Case 0
      lngd = (lnge And 3) * 64
      lngj = lngj + 1
  End Select
  Mid(strb, lngn, 1) = Chr(lngc Or lngd)
Next lngn
mstrText = strb
End Sub
Private Sub Initialize()
Dim lngn As Long
Randomize Rnd(-1)
For lngn = 1 To Len(mstrKey)
  Randomize Rnd(-Rnd * Asc(Mid(mstrKey, lngn, 1)))
Next lngn
End Sub
Camaro Chevelle вне форума Ответить с цитированием
Старый 26.12.2011, 21:06   #3
Skolos
Пользователь
 
Регистрация: 09.12.2011
Сообщений: 36
По умолчанию

Спасибо Вам большое!!! Буду разбирать. Я знаю Си/С++. Но с таким языком не сталкивался. Попытаюсь перевести на си.
Skolos вне форума Ответить с цитированием
Старый 26.12.2011, 22:40   #4
Skolos
Пользователь
 
Регистрация: 09.12.2011
Сообщений: 36
По умолчанию

Цитата:
Сообщение от Camaro Chevelle Посмотреть сообщение
один из моих любимых алгоритмов
Код:
Option Explicit
Private mstrKey As String, mstrText As String
Public Property Let Keystring(strKey As String)
  mstrKey = strKey
  Initialize
End Property
Public Property Let Text(strtext As String)
  mstrText = strtext
End Property
Public Property Get Text() As String
  Text = mstrText
End Property
Public Sub DoXor()
Dim lngc As Long, intb As Long, lngn As Long
For lngn = 1 To Len(mstrText)
  lngc = Asc(Mid(mstrText, lngn, 1))
  intb = Int(Rnd * 256)
  Mid(mstrText, lngn, 1) = Chr(lngc Xor intb)
Next lngn
End Sub
Public Sub Stretch()
Dim lngc As Long, lngn As Long, lngj As Long, lngk As Long, lnga As Long, strb As String
lnga = Len(mstrText)
strb = Space(lnga + (lnga + 2) \ 3)
For lngn = 1 To lnga
  lngc = Asc(Mid(mstrText, lngn, 1))
  lngj = lngj + 1
  Mid(strb, lngj, 1) = Chr((lngc And 63) + 59)
  Select Case lngn Mod 3
    Case 1: lngk = lngk Or ((lngc \ 64) * 16)
    Case 2: lngk = lngk Or ((lngc \ 64) * 4)
    Case 0: lngk = lngk Or (lngc \ 64)
      lngj = lngj + 1
      Mid(strb, lngj, 1) = Chr(lngk + 59)
      lngk = 0
  End Select
Next lngn
If lnga Mod 3 Then
  lngj = lngj + 1
  Mid(strb, lngj, 1) = Chr(lngk + 59)
End If
mstrText = strb
End Sub
Public Sub Shrink()
Dim lngc As Long, lngd As Long, lnge As Long, lnga As Long, lngb As Long, _
  lngn As Long, lngj As Long, lngk As Long, strb As String
lnga = Len(mstrText)
lngb = lnga - 1 - (lnga - 1) \ 4
strb = Space(lngb)
For lngn = 1 To lngb
  lngj = lngj + 1
  lngc = Asc(Mid(mstrText, lngj, 1)) - 59
  Select Case lngn Mod 3
    Case 1
      lngk = lngk + 4
      If lngk > lnga Then lngk = lnga
      lnge = Asc(Mid(mstrText, lngk, 1)) - 59
      lngd = ((lnge \ 16) And 3) * 64
    Case 2
      lngd = ((lnge \ 4) And 3) * 64
    Case 0
      lngd = (lnge And 3) * 64
      lngj = lngj + 1
  End Select
  Mid(strb, lngn, 1) = Chr(lngc Or lngd)
Next lngn
mstrText = strb
End Sub
Private Sub Initialize()
Dim lngn As Long
Randomize Rnd(-1)
For lngn = 1 To Len(mstrKey)
  Randomize Rnd(-Rnd * Asc(Mid(mstrKey, lngn, 1)))
Next lngn
End Sub
А как называется даный алгоритм???
Skolos вне форума Ответить с цитированием
Старый 26.12.2011, 23:26   #5
Camaro Chevelle
Форумчанин
 
Регистрация: 05.11.2011
Сообщений: 102
По умолчанию

я ответил в ЛС
Camaro Chevelle вне форума Ответить с цитированием
Старый 27.12.2011, 00:22   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Спасибо Вам большое!!! Буду разбирать.
Skolos, О! Святая простота...

p.s. Вы хоть понимаете, что вероятность, скажем, угадать 6 шаров из 36 в Русском Лото на порядок больше, чем так, заочно, по расширению угадать, что находится внутри файла и чем оно зашифровано!

(я уже молчу о том, что существует множество стойких криптоалгоритмов, для которых, даже точно зная алгоритм - невозможно получить из криптограммы исходный текст без знания ключа)
Serge_Bliznykov вне форума Ответить с цитированием
Старый 27.12.2011, 00:55   #7
Camaro Chevelle
Форумчанин
 
Регистрация: 05.11.2011
Сообщений: 102
По умолчанию

да ладно, пусть парень разбирается, в любом случае получит опыт. криптография имхо интересная штука
Camaro Chevelle вне форума Ответить с цитированием
Старый 27.12.2011, 11:55   #8
Skolos
Пользователь
 
Регистрация: 09.12.2011
Сообщений: 36
По умолчанию

Решение нашел. Всем кто откликнулся спасибо.
Skolos вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
кодировка данных IIUH Помощь студентам 10 19.10.2011 22:42
Кодировка данных Aleskandr PHP 9 05.07.2011 22:28
База данных MySQL и кодировка! nikolai_P SQL, базы данных 3 17.11.2009 22:50
Кодировка передачи данных в Word Flame_of_Death Общие вопросы Delphi 3 14.07.2009 12:25
База данных и кодировка RIO Общие вопросы Delphi 2 21.05.2009 11:08