Хакер писал(а):Xor. Устранивает, нет? Если нет, говори, почему, и сразу же пиши список требований к шифрованию, которым должен удовлетворять предлагаемый алгоритм.
aleksmir писал(а):XOR - слишком слабый.
1. Нужно зашифровать короткий текст (примерно 10 символов).
...
5. Стойкость алгоритма шифрования должна быть достаточно высокой.
Хакер писал(а):aleksmir писал(а):XOR - слишком слабый.
1. Нужно зашифровать короткий текст (примерно 10 символов).
...
5. Стойкость алгоритма шифрования должна быть достаточно высокой.
Если зашифровать 10 байтов 10-байтным ключём, стойкость будет сверхвысокой. Будет сверхвысокое количество ключей, применение которых даёт резумный, но неправильный результат.
Феерично бесполезное требование при хранении ключа в теле программы.5. Стойкость алгоритма шифрования должна быть достаточно высокой.
Antonariy писал(а):Феерично бесполезное требование при хранении ключа в теле программы.
alibek писал(а):Пример чего? XOR-шифрования?
Private Sub Primer()
Dim cod As String
Dim key As String
Dim t As String
Dim i As Integer
Dim keyb As Integer
cod = "text 123 456"
key = "1234567890"
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
End Sub
key = "1234567890"
keyb = Asc(key)
alibek писал(а):Что по-твоему делают эти строки?
alibek писал(а):Что по-твоему делают эти строки?
- Код: Выделить всё
key = "1234567890"
keyb = Asc(key)
NashRus писал(а):если надо минимум 1998.
' ФУНКЦИЯ: шифровка по XOR
' strText - исходный текст
' Возвращает зашифрованную (расшифрованную) строку
Public Function EncodeXOR(strText As String) As String
' Переменные: значения
Dim strLine As String ' исходная строка
Dim strRes As String ' строка результата
Dim strKey As String ' ключ
Dim intLenText As Integer ' длина текста
Dim intLenKey As Integer ' длина ключа
Dim intText As Integer ' счётчик символов текста
Dim intKey As Integer ' счётчик символов ключа
' Код
' определение исходной строки
strLine = VBA.Trim(strText)
' инициализация строки результата
strRes = ""
' инициализация ключа
strKey = "fghfghe5ttergdfgdfg34534terergdfgdfcvbcvdgert345345345tergdfhg567rthad345wtrhydfhjghje546y7e45ty34523regdfg"
' определение длины текста
intLenText = VBA.Len(strText)
' определение длины ключа
intLenKey = VBA.Len(strKey)
' заполнение исходной строки до длины ключа
If intLenText < intLenKey Then
' добавление пробелов
For intText = intLenText + 1 To intLenKey
strLine = strLine & " "
Next
' переопределение длины текста
intLenText = intLenKey
End If
' инициализация счётчика ключа
intKey = 1
' выполнение XOR
For intText = 1 To intLenText
' выполнение XOR
strRes = strRes & VBA.Chr$(VBA.Asc(VBA.Mid$(strLine, intText, 1)) Xor (VBA.Asc(VBA.Mid(strKey, intKey, 1))))
' увеличение счетчика ключа
intKey = intKey + 1
' сброс счетчика ключа
If intKey > intLenKey Then intKey = 1
Next
' сохранение результата
EncodeXOR = VBA.Trim(strRes)
End Function
aleksmir писал(а):Зная первый символ, перебором всех символов находим символ, который даст первый символ шифра.
Option Explicit
Dim s(0 To 255) As Integer
Dim kep(0 To 255) As Integer
Public Function EnDeCrypt(plaintxt As String, Password As String) As String
Dim temp As Integer
Dim a As Integer
Dim b As Integer
Dim cipherby As Byte
Dim cipher As String
'Инициализация
'Создание ключа
b = 0
For a = 0 To 255
b = b + 1
If b > Len(Password) Then
b = 1
End If
kep(a) = Asc(Mid$(Password, b, 1))
Next a
For a = 0 To 255
s(a) = a
Next a
b = 0
For a = 0 To 255
b = (b + s(a) + kep(a)) Mod 256
temp = s(a)
s(a) = s(b)
s(b) = temp
Next a
'Побайтное шифрование
For a = 1 To Len(plaintxt)
cipherby = EnDeCryptSingle(Asc(Mid$(plaintxt, a, 1)))
cipher = cipher & Chr(cipherby)
Next
EnDeCrypt = cipher
End Function
Private Function EnDeCryptSingle(plainbyte As Byte) As Byte
Dim i As Integer
Dim j As Integer
Dim temp As Integer
Dim k As Integer
Dim cipherby As Byte
'Шифрование одного байта
i = (i + 1) Mod 256
j = (j + s(i)) Mod 256
temp = s(i)
s(i) = s(j)
s(j) = temp
k = s((s(i) + s(j)) Mod 256)
cipherby = plainbyte Xor k
EnDeCryptSingle = cipherby
End Function
aleksmir писал(а):Первая строка присваивает переменной key текстовое значение "1234567890".
Вторая строка записывает в переменную keyb ASCII-код первого символа строки key, т.е. 49.
alibek писал(а):То есть ты не понял, что ты используешь ключ длиною 1 байт, вне зависимости от того, что у тебя в key?
Diamock писал(а):Пользуюсь найденным примером
Шифрование по алгоритму RC4
Хакер писал(а):Однако, если знать 10 неправильных ответов, можно подобрать 10 неправильных кодов, которые дадут такие ответы. И только знание правильного кода даст правильный ответ.
aleksmir писал(а):Блин, а как сделать 10 неправильных ответов?...
aleksmir писал(а):Понял, почему не понял? Я же привёл следом исправленный исходный код, который уже зависит от длины ключа.
Сейчас этот форум просматривают: AhrefsBot, Google-бот, Yandex-бот и гости: 81