Дешифровка и шифровка по XOR

Программирование на Active Server Pages и VBScript.
CodeNoob
Начинающий
Начинающий
 
Сообщения: 9
Зарегистрирован: 03.11.2009 (Вт) 16:08

Дешифровка и шифровка по XOR

Сообщение CodeNoob » 03.11.2009 (Вт) 16:20

Господа как на эту функцию написать расшифровщик :

Код: Выделить всё
cod = "text 123"
key ="234"
keyb = asc(KEY)
for i=1 to len(cod)
s = asc(mid(cod,i,1))xor(keyb)
t = Chr(s)


Это основной упрощенный кусок кода - байты читаются из текстового файла , и сохраняются в другой
Криптовать то вроде криптует , а как из кракозябров обратно исходный текст вернуть не могу додуматься(((

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: Дешифровка и шифровка по XOR

Сообщение iGrok » 03.11.2009 (Вт) 16:58

CodeNoob писал(а):Криптовать то вроде криптует , а как из кракозябров обратно исходный текст вернуть не могу додуматься(((

Точно так же. xor - симметричная операция.
label:
cli
jmp label

CodeNoob
Начинающий
Начинающий
 
Сообщения: 9
Зарегистрирован: 03.11.2009 (Вт) 16:08

Re: Дешифровка и шифровка по XOR

Сообщение CodeNoob » 03.11.2009 (Вт) 18:56

То есть банально перексориваем ?

Код: Выделить всё
for j=1 to len (t)' t-шифротекст из предыдущего примера
f=asc(mid(t,j,1))xor(keyb)
h=Chr(f)
msgbox h
next


Числа вроде выводит - а текст абракадабра

Где я напортачил???

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: Дешифровка и шифровка по XOR

Сообщение iGrok » 04.11.2009 (Ср) 0:08

Везде.

Во-первых, ключ. Какой бы ты ни взял, из него берётся только первый символ.
Во-вторых, t. У тебя она просто заменяется каждый раз, вместо того, чтобы аккумулировать вывод.
Не говоря уже об Option Explicit, и объявлении переменных.

Но, вообще говоря, если исправить работу с аккумулятором, у меня работает корректно.
Код: Выделить всё
    cod = "text 123"
    key = "234"
    keyb = Asc(key)
    t = ""
    For i = 1 To Len(cod)
        t = t & Chr$(Asc(Mid$(cod, i, 1)) Xor (keyb))
    Next i
    MsgBox t
    cod = ""
    For i = 1 To Len(t)
        cod = cod & Chr$(Asc(Mid(t, i, 1)) Xor (keyb))
    Next i
    MsgBox cod


З.Ы. А это точно относится к ASP? Это вообще на чём код?
label:
cli
jmp label

CodeNoob
Начинающий
Начинающий
 
Сообщения: 9
Зарегистрирован: 03.11.2009 (Вт) 16:08

Re: Дешифровка и шифровка по XOR

Сообщение CodeNoob » 04.11.2009 (Ср) 10:02

Написано на VBS (на скорую руку во время изучения работы со строками), ключ у меня в оригинале генериться в результате сложения ascii кода каждого его символа с некоторым случайным числом (но результатом является сумма rnd и его последнего символа как мне теперь стало ясно :oops: :) )
Так как же корректно аккумулировать значения переменной ? Я с такими операциями так плотно еще не сталкивался :alien:

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: Дешифровка и шифровка по XOR

Сообщение iGrok » 04.11.2009 (Ср) 13:00

CodeNoob писал(а):Так как же корректно аккумулировать значения переменной ? Я с такими операциями так плотно еще не сталкивался :alien:

А чем то, что у меня написано, отличается от твоего варианта?

t = t & Chr$(Asc(Mid$(cod, i, 1)) Xor (keyb))
Это в случае строк.

З.Ы. И не забывай, что символ - это один байт. Соответственно, ключ у тебя тоже не должен вылезать за границы байта. Иначе ты просто потеряешь часть информации, и расшифровать действительно может не получиться. Ну либо нужно менять алгоритм на что-нибудь посерьёзнее.

З.З.Ы. Поправил под VBS
Код: Выделить всё
cod = "text 123"
key = "234"
keyb = Asc(key)
t = ""
For i = 1 To Len(cod)
    t = t & Chr(Asc(Mid(cod, i, 1)) Xor (keyb))
Next

MsgBox t
cod = ""
For i = 1 To Len(t)
    cod = cod & Chr(Asc(Mid(t, i, 1)) Xor (keyb))
Next
MsgBox cod
label:
cli
jmp label

CodeNoob
Начинающий
Начинающий
 
Сообщения: 9
Зарегистрирован: 03.11.2009 (Вт) 16:08

Re: Дешифровка и шифровка по XOR

Сообщение CodeNoob » 04.11.2009 (Ср) 18:49

Благодарю за участие - буду пробовать , а там ежели во вкус войду может и помудрее чего придумаю

И еще один вопросец слегка не по теме - каким образом можно заменить символ на строку , допустим находим символ " * " и заменяем на строчку "privet" ?

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Re: Дешифровка и шифровка по XOR

Сообщение Денис » 05.11.2009 (Чт) 13:11

Replace
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.


Вернуться в ASP и VBScript

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 39

    TopList  
cron