@Luamad

Как защитить какой то текст в скриптовом языке программирования?

Здравствуйте! Очень слаб в теме хранения данных безопасно. Суть такова что нужна скрыть пару десятков строк текста от игрока. Что бы он заранее не мог узнать ответа.
И не очень хочется из-за этого делать элементы подключения к веб серверу. Тем более и это особо не спасет.
Проблема в том что использоваться это будет скриптовым языком. В Python или Lua (Love2d).
Вариант сделать какой то бинарник? На компилируемом языке. Не уверен что это спасет, так же как не понимаю как из скриптового языка безопасно получать строку в компилируемом.

Есть идеи по этому поводу? Заранее спасибо.
  • Вопрос задан
  • 215 просмотров
Пригласить эксперта
Ответы на вопрос 5
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Храните хэш правильного ответа и сравнивайте с хэшем от введённого значения.
Ответ написан
Самое простое – base64 кодирование/декодирование – уже не будет текст читаемым в коде:
import base64

xoxoxo = b'0J/RgNC40LLQtdGCLCDQotC+0YHRgtC10YAh'

decoded = base64.b64decode(xoxoxo).decode('utf-8')
# Привет, Тостер!


Как «шифровать»
>>> source = 'Привет, Тостер!'
>>> bytes = source.encode('utf-8')
>>> xoxoxo = base64.b64encode(bytes)
Ответ написан
Комментировать
NeiroNx
@NeiroNx
Программист
Строки в бинарнике будут всеравно в открытом виде, а если зашифровать их по словарю то без разбора исходника ничего не понятно будет.
>>> text = "encoded message"
>>> E = " ,.?!@#$%^&*()"+"".join([chr(x)for x in list(range(ord('A'),ord('Z')+1))+list(range(ord('a'),ord('z')+1))])
>>> E
' ,.?!@#$%^&*()ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
>>> encoded_text = "+".join(["E[%d]"%E.index(t) for t in text])
>>> encoded_text
'E[44]+E[53]+E[42]+E[54]+E[43]+E[44]+E[43]+E[0]+E[52]+E[44]+E[58]+E[58]+E[40]+E[46]+E[44]'
>>> eval(encoded_text)
'encoded message'
>>>


тоесть в коде вы пишите:
E = ' ,.?!@#$%^&*()ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
text1=E[44]+E[53]+E[42]+E[54]+E[43]+E[44]+E[43]+E[0]+E[52]+E[44]+E[58]+E[58]+E[40]+E[46]+E[44]
text2=E[23]+E[60]+E[58]+E[59]+E[0]+E[45]+E[54]+E[57]+E[0]+E[33]+E[18]+E[32]+E[33]+E[0]+E[64]+E[54]+E[60]+E[0]+E[52]+E[48]+E[53]+E[43]+E[4]

Практика достаточно распространенная когда хранятся пароли и прочее в коде.
А еще в качестве словаря можно использовать произвольный текст.
Ответ написан
sim3x
@sim3x
Луа компилируется в бинарник
https://stackoverflow.com/questions/194520/creatin...

Питон - компилируется в свой набор комманд
Ответ написан
Скриптовые языки поддаются обфускации, посмотрите в этом направлении, а так лучше конечно писать модуль, но и на модули могут найтись свои умельцы. )
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы