加密对象

时间:2009-06-18 09:40:29

标签: oop encryption md5

我有一个像Employee这样的课程。这个类有一些字段,如Id,Name,Surname,Tasks(一个字符串数组),isManager,TaskDueDates(一个日期时间数组)。 我想从这个对象生成一个文本。 我认为使用分离器,这是一个基本的解决方案。例如我的文字可以是:13; George; Smith; {“Task1”,“Task2”,“Task3”},false,{this night,nextweek}

但是如果对象的一个​​字段包含这个分隔符字符;程序将无法正常工作。 生成文本后;我想使用一些密钥使用MD5加密它。这将生成一些加密数据,如asp .net viewstate信息。 程序还会将此加密数据解密为源对象。

我该怎么做? 我使用的是Asp .Net 2005

4 个答案:

答案 0 :(得分:4)

MD5不加密。这是一个哈希算法。如果从某些数据中创建MD5,则无法从散列中创建数据。有关详细信息,请参阅http://en.wikipedia.org/wiki/Cryptographic_hash_function

对于您的问题:尝试此链接 http://www.codeproject.com/KB/security/SimpleEncryption.aspx

答案 1 :(得分:1)

首先你不能解密MD5,你需要一个真正的加密算法。您可能想使用AES256。

至于字段,Unix有永久的字段分隔文本,并且它们通常在任何通常特殊的字符前放置一个'\',但在这种情况下不应该(如果你想使用''在文中,你写'\')。你可以偷走它。

编辑:如果您使用的是ASP,为什么不将输出格式化为HTML?然后你可以把输出放在一个表中。

答案 2 :(得分:0)

正如答案中已经提到的,对于加密,您需要使用一些encryption algorithm,如AED或DES。

对于序列化,即将对象转换为字符串,您可以使用;作为分隔符来制定自己的方案。要处理输入包含;的情况,您需要将;转换为\;之类的其他内容。您的序列化对象将如下所示:

Name: Geor;ge

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

转换回对象时,只要在\之前找到;,就会知道此;是字符串的一部分,而不是实际的分隔符。

关于使用语言序列化功能,是的,您应该可以这样做,但这取决于您正在使用的语言。

答案 3 :(得分:0)

如果您希望对象采用人类可读的格式,而不是手动序列化,请使用自动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文件中所需的成员为publicprivateprotected不会被XML序列化。