Я пытался выучить VBScript и поставил перед собой задачу.Я хотел создать функцию в VBScript, которая что-то шифрует в RC4, и расшифровывает в Python (по сути, тот же процесс / алгоритм, но я хотел убедиться, что он был правильным).
Для моего кода Python у меня естьследующее:
def rc4crypt(data, key):
x = 0
box = range(256)
for i in range(256):
x = (x + box[i] + ord(key[i % len(key)])) % 256
box[i], box[x] = box[x], box[i]
x = 0
y = 0
out = []
for char in data:
x = (x + 1) % 256
y = (y + box[x]) % 256
box[x], box[y] = box[y], box[x]
out.append(chr(ord(char) ^ box[(box[x] + box[y]) % 256]))
return ''.join(out)
Из того, что я могу сказать из моих интернет-исследований, это довольно стандартный способ реализации RC4.Тем не менее, когда дело доходит до VBScript, мне было немного трудно.
Вот мой код:
Function RunRC4(sMessage, strKey)
Dim kLen, x, y, i, j, temp, l
Dim s(256), k(256)
'Init keystream
kLen = Len(strKey)
For i = 0 To 255
s(i) = i
l = Mid(strKey, (i Mod kLen) + 1, 1)
k(i) = Asc(Mid(strKey, (i Mod kLen) + 1, 1))
Next
j = 0
For i = 0 To 255
j = (j + k(i) + s(i)) Mod 256
temp = s(i)
s(i) = s(j)
s(j) = temp
Next
'Encode/Decode
For i = 1 To Len(sMessage)
x = (x + 1) Mod 256
y = (y + s(x)) Mod 256
temp = s(x)
s(x) = s(y)
s(y) = temp
temp1 = Asc(Mid(sMessage, i, 1))
temp2 = Chr(s((s(x) + s(y)) Mod 256))
RunRC4 = RunRC4 & Chr(temp1 Xor temp2)
Next
End Function
Это очень похоже на многиедругие посты там.Есть пара связанных постов, которые я нашел с людьми, задающими подобные вопросы, но не совсем тот ответ, который я ищу:
Шифрование строки в java и дешифрование в VBScript с использованием RC4
Расшифровка RC4 с ключом в Python
Как вы могли бы сказать, оба из них используют довольно похожий сценарий.Но ни один из них не работает должным образом при попытке декодирования.Я также посмотрел другие места, в том числе алгоритм, такой как:
https://bytes.com/topic/access/insights/906671-rc4-encryption-algorithm-vba-vbscript
Кто-нибудь сможет помочь?Было бы полезно узнать, удалось ли вам успешно запустить каждую функцию.В идеале цель состоит в том, чтобы запустить шифрование с помощью VBScript, взять вывод и расшифровать с помощью Python и получить ожидаемый исходный результат.