Шифрование объектов - PullRequest
0 голосов
/ 18 июня 2009

У меня есть класс, как сотрудник. Этот класс имеет несколько полей, таких как Id, Имя, Фамилия, Задачи (строковый массив), isManager, TaskDueDates (массив даты и времени). Я хочу создать текст из этого объекта. Я думаю, что использовать разделители, это базовое решение. Например, мой текст может быть: 13; Джордж; Смит; {"Task1", ​​"Task2", "Task3"}, false, {this night, nextweek}

Но если одно из полей объекта включает в себя этот разделитель символов; Программа не будет работать. После того, как я сгенерирую текст; Я хочу зашифровать его с помощью MD5, используя какой-то ключ. Это сгенерирует некоторые зашифрованные данные, такие как asp .net viewstate information. Программа также расшифрует эти зашифрованные данные в исходном объекте.

Как я могу это сделать? Я использую Asp .Net 2005

Ответы [ 4 ]

4 голосов
/ 18 июня 2009

MD5 без шифрования. Это алгоритм хеширования. Если вы создаете MD5 из некоторых данных, невозможно создать данные из хеша. Подробнее см. http://en.wikipedia.org/wiki/Cryptographic_hash_function.

По вашему вопросу: попробуйте эту ссылку http://www.codeproject.com/KB/security/SimpleEncryption.aspx

1 голос
/ 18 июня 2009

Прежде всего, вы не можете расшифровать MD5, вам нужен настоящий алгоритм шифрования для этого. Возможно, вы захотите использовать AES256.

Что касается полей, в Unix текст, разделенный полями, всегда, и они обычно ставят '\' перед любым символом, который обычно является специальным, но в этом случае не должно быть (если вы хотите использовать \ 'в тексте вы пишете' \ '). Вы можете украсть это.

Редактировать: Если вы используете ASP, почему бы вам не отформатировать вывод как HTML? Тогда вы можете поместить вывод в таблицу.

0 голосов
/ 18 июня 2009

Вместо ручной сериализации, если вы хотите, чтобы ваш объект читался человеком, используйте автоматическую сериализацию XML:

XmlSerializer formatter;

using (FileStream file = new FileStream (Path.Combine (Application.StartupPath, GetType ().ToString () + ".xml.template"), FileMode.Create))
{
        formatter = new XmlSerializer (typeof (G));
        formatter.Serialize (file, this);
}

С сериализацией XML убедитесь, что элементы, которые вы хотите в файле XML, - public. private и protected не будут сериализованы в XML.

0 голосов
/ 18 июня 2009

Как уже упоминалось в ответах, для шифрования вам нужно будет использовать алгоритм шифрования , например, AED или DES.

Для сериализации, то есть преобразования вашего объекта в строку, вы можете создать свою собственную схему, например, используя ; в качестве разделителя. Для обработки случаев, когда входные данные содержат ;, вам необходимо преобразовать ; во что-то еще, например \;. Ваш сериализованный объект будет выглядеть примерно так:

Name: Geor;ge

    3;Geor\;ge;Smith;{"Task1","Task2","Task3"};false;{this night,nextweek}

При преобразовании обратно в объект, всякий раз, когда вы найдете \ перед ;, вы будете знать, что этот ; является частью строки, а не фактическим разделителем.

Об использовании функции сериализации языка, да, вы должны это сделать, но это зависит от языка, на котором вы работаете.

...