2009-06-18 15 views
0

私はEmployeeのようなクラスを持っています。このクラスには、Id、Name、Surname、Tasks(文字列配列)、isManager、TaskDueDates(日時配列)のようなフィールドがあります。 このオブジェクトからテキストを生成します。 セパレータを使用すると思いますが、これは基本的な解決方法です。たとえば、私のテキストは次のようになります:13; George; Smith; {"Task1"、 "Task2"、 "Task3"}、false、{this night、nextweek}オブジェクトの暗号化

しかし、オブジェクトのフィールドの1つにセパレータ文字;プログラムは動作しません。 テキストを生成した後。私はいくつかのキーを使用してMD5で暗号化したい。これはasp.netのviewstate情報のような暗号化されたデータを生成します。 プログラムは、この暗号化されたデータをソースオブジェクトに復号化します。

どうすればいいですか? 私はAsp .Net 2005を使用しています。

答えて

4

MD5は暗号化されていません。これはハッシングアルゴリズムです。あるデータからMD5を作成した場合、ハッシュからデータを作成することはできません。詳細については、http://en.wikipedia.org/wiki/Cryptographic_hash_functionを参照してください。あなたの質問のために

:あなたはMD5を解読することはできませんすべての http://www.codeproject.com/KB/security/SimpleEncryption.aspx

1

まずこのリンクをしてみてください、あなたは、このために、実際の暗号化アルゴリズムを必要とします。あなたはAES256を使いたいかもしれません。

フィールドに関しては、Unixはフィールド分離テキストを永遠に持っていて、通常は特別な文字の前に '\'を置きますが、この場合は使用しないでください(もしあなたが'\'はテキストの中に '\'と書く)。あなたはそれを盗むことができます。

編集: ASPを使用している場合、出力をHTML形式でフォーマットしないのはなぜですか?次に、出力を表に入れることができます。

+0

セパレータを使用する代わりに他の方法がありますか? シリアル化を使用してこの目標を達成できますか? –

+0

はい、使用できます –

0

答えですでに述べたように、暗号化にはAEDまたはDESのようなencryption algorithmを使用する必要があります。

シリアル化では、オブジェクトを文字列に変換しているので、;をセパレータとして使用するような独自のスキームを作成できます。入力に;が含まれる場合を処理するには、;\;のようなものに変換する必要があります。あなたのシリアライズされたオブジェクトは、次のようになります:

Name: Geor;ge 

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

あなたが;\を見つけるたびに、オブジェクトに戻って変換するには、この;は、文字列の一部ではなく、実際の区切りであることを知っているだろう。

言語シリアライズ機能については、そうすることができるはずですが、作業している言語によって異なります。

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ファイルにしたいメンバーがpublicであることを確認してください。 privateおよびprotectedはXMLでシリアル化されません。