Растворить строковые байты в шаблон на основе формулы фиксированной длины с помощью ключей и даже извлечь эти байты - PullRequest
0 голосов
/ 24 августа 2010

Предположим, есть строка, содержащая 255 символов. И есть фиксированная длина, предполагающая 64-128 байтов своего рода шаблон байтов. Я хочу «растворить» эту строку с 255 символами, побайтно, в другой шаблон байтов фиксированной длины. Шаблон байтов подобен «хэшу» на основе формул или чему-то подобному, в котором алгоритм на основе формул растворяет байты в нем. Позже, когда мне потребуется извлечь растворенные байты из этого шаблона фиксированной длины, я бы использовал тот же алгоритм, или функцию извлечения. Алгоритм работает через специальные ключи или пароли и использует их для растворения байтов в шаблоне; те же ключи используются для извлечения байтов в их исходном значении из шаблона. Я прошу помощи у кодеров здесь. Пожалуйста, также направьте меня к этапам, чтобы я мог понять, какие шаги необходимо предпринять, что делать. Я знаю только VB .NET и C #.

Например:

У меня есть три символа: «A», «B», «C»

Супер-шаблон фиксированной длины на основе формулы (работает как водоворот): AJE83HDL389SB4VS9L3

Теперь я хочу «растворить», «погрузить» символы «A», «B», «C», один за другим в вышеприведенный шаблон, чтобы полностью изменить его. После растворения персонажей супер-шаблон резко меняется, как и хэш:

EJS83HDLG89DB2G9L47

Я смог бы извлечь символы из последнего распущенного символа в первый, используя алгоритм извлечения и оригинальные ключи, которые использовались для растворения символов в этом супер-шаблоне. После извлечения всех символов супер-шаблон сбрасывается в исходное исходное состояние. Каждый символ вставки и удаления имеет уникальное состояние шаблона.

После извлечения всех символов супер-шаблон возвращается в исходное состояние. Это происходит после удаления персонажа с помощью алгоритма извлечения:

AJE83HDL389SB4VS9L3

Ответы [ 3 ]

2 голосов
/ 24 августа 2010

Это очень похоже на ваш предыдущий вопрос (ы). Проблема с ними в том, что вы, кажется, начинаете спрашивать с полуобожженного решения.

Итак, что вы действительно хотите? Ввод, вывод, ограничения?

Чтобы зашифровать строку, используйте Encryption ( Reijndael ). Чтобы преобразовать полученные данные byte [] в строку (для транспорта), используйте base64 .

1 голос
/ 25 августа 2010

Если вы довольны наличием «ключей» для отдельных битов данных, определяемых для вас, это можно сделать аналогично одноразовому блокноту (хотя это не одноразово!) - сгенерировать случайную строкув качестве вашей «базы», ​​а затем xor ваши строки данных с ним.Каждый выход является «ключом» для возврата исходных данных, а «база» не меняется.Однако это не приведет к тому, что выходные данные будут немного меньше, чем входные (и в любом случае это невозможно в общем случае), если это то, к чему вы стремитесь.не совсем понятно, что вы хотите.Почему бы просто не задать вопрос о том, как достичь ваших конечных целей, и позволить людям дать ответы, описывающие, как, или сказать, почему это невозможно.

0 голосов
/ 26 августа 2010

Вот 2 случая

  • Сжатие без потерь (точные байты декодируются из сжатой информации)

В этом случае Энтропия Шеннона

четко заявляет, что не может быть никакого алгоритма, который мог бы сжимать данные до скоростей, превышающих предсказания информационной энтропии.

  • Слабое сжатие (некоторые оригинальные байты теряются навсегда в схеме сжатия, такие какиспользуется в файлах изображений JPG (помните ли вы параметр «качество изображения» ??))

В этом типе сжатия вы, однако, можете создать более качественную и лучшую схему сжатия с таким штрафом, что вы теряете больше иболее оригинальные байты.(Вплоть до примера сжатия до нуля байтов, где после него восстанавливаются нулевые байты, но это сжатие также изобретено - волшебная кнопка DELETE - перемещает информацию в черную дыру (извините за сарказм);)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...