Шифрование и защита от взлома - это разные вещи, в общем-то. Подход разный и требования тоже.
Защита от взлома предназначена для затруднения просмотра программы при том, что для нормального запуска программы знание какого-либо пароля не требуется. То есть взломщику не нужно подбирать пароль, вместо этого ему нужно разбираться в запутанной программе. Запутывание программ (code obfuscation) - это очень интересное направление в науке информатике. Во времена эры Спектрума люди вручную, по большей части интуитивно, занимались этим. На сегодняшний день существуют научно обоснованные, автоматические запутыватели кода. И упаси Боже всех нас от необходимости разбирать результаты их работы. Труд адский, скажу я вам!
Шифрование имеет другие цели и методы. Считается, что взломщику известен алгоритм (метод) шифрования, но не известен ключ (пароль). И секретность ключа является главным бастионом шифровальной защиты.
Если кого-то интересует шифрование на ZX, то во-первых, старые программы использовать для этого категорически не рекомендуется. В былые времена не было той строгости в обращении с шифрами. Каждый мог придумать "сложный, невзламываемый" шифр на коленке и реализовать его в своей программе. А опытный современный взломщик шифров, соответственно - взломать такой шифр довольно быстро.
Чтобы надежно защищать данные шифром, нужно использовать научно обоснованный, общепринятый метод шифрования, для Спектрума лучше всего наверно DES подходит. Можно поискать реализации для Z80. В последнее время стало модным делать DES-bootloaders для микроконтроллеров и вообще реализовывать этот метод на микроконтроллерах, так что должно существовать много 8-битных реализаций.
Добавлено через 8 минут
Я лично в 96м году реализовал шифрование данных методом квадрата Виженера на ASC CP/M. Но, конечно, взлом квадрата Виженера - это задача для студентов, позже я в одной книжке по взлому шифров видел это в качестве упражнения в одном из первых разделов
Что касается защиты запутанным кодом, то рекомендую желающим взломать (то есть разобраться) в защите моей проги RRESTORE (http://www.geocities.com/barmaley_m/rrestore.zip). Интересно будет послушать мнения профессионалов
Добавлено через 14 минут
А еще, из защит запутанным кодом, мне очень интересной показалась защита Max Iwamoto. Фактически, там был реализован пи-код (псевдокод) путем вызова коротких подпрограмм, каждая типа:
LD A,R
RET
INC HL
RET
XOR (HL)
RET
POP HL
LD SP,HL
RET
и так далее. Последовательность, в которой эти подпрограммы вызывались, была сохранена на стеке, так что никакого цикла, выбирающего откуда-то адреса этих подпрограмм в нужной последовательности, не существовало. Вместо этого последовательность адресов была записана на стеке, SP устанавливался на начало этой последовательности, а потом выполнялась команда RETПодпрограммы, вроде последней, позволяли осуществлять "переходы" в этом пи-коде. Были также подпрограммы условного перехода, на основе которых делался цикл ксорки.
Выглядело это все страшно до тех пор, пока я не понял основную идею. После этого восстановить программу в пи-коде и разобраться в ней было легко. Сама она не была запутанной.





Ответить с цитированием