2009-06-18 8 views
0

J'ai une classe comme employé. Cette classe comporte des champs tels que Id, Name, Nom, Tasks (un tableau de chaînes), isManager, TaskDueDates (un tableau date-heure). Je souhaite générer un texte à partir de cet objet. Je pense à utiliser des séparateurs, c'est une solution de base. Par exemple mon texte peut être: 13; George; Smith; {"Tâche1", "Tâche2", "Tâche3"}, false, {cette nuit, nextweek}Chiffrer des objets

mais si un des champs de l'objet l'inclut caractères séparateurs; le programme ne fonctionnera pas. Après avoir généré le texte; Je veux le chiffrer avec MD5 en utilisant une clé. Cela va générer des données cryptées comme les informations viewstate asp .net. Le programme déchiffrera également ces données cryptées sur l'objet source.

Comment est-ce que je peux faire ceci? J'utilise Asp .Net 2005

Répondre

1

Tout d'abord, vous ne pouvez pas déchiffrer MD5, vous avez besoin d'un algorithme de chiffrement réel pour cela. Vous pouvez utiliser AES256. En ce qui concerne les champs, Unix a toujours un texte séparé sur le terrain, et ils placent généralement un «\» devant tout caractère normalement spécial, mais ne devrait pas l'être dans ce cas (si vous voulez utiliser un '\' dans le texte, vous écrivez '\'). Tu pourrais voler ça.

Éditer: Si vous utilisez ASP, pourquoi ne formatez-vous pas la sortie au format HTML? Ensuite, vous pouvez mettre la sortie dans un tableau.

+0

Existe-t-il une autre méthode au lieu d'utiliser des séparateurs? La sérialisation peut-elle être utilisée pour cet objectif? –

+0

Oui, ils peuvent être utilisés –

0

Comme déjà mentionné dans les réponses, pour le cryptage, vous devrez utiliser un encryption algorithm comme AED ou DES.

Pour la sérialisation, c'est-à-dire la conversion de votre objet en chaîne, vous pouvez créer votre propre schéma, par exemple en utilisant ; comme séparateur. Pour gérer les cas où l'entrée contient ;, vous devrez convertir ; à autre chose comme \;. Votre objet sérialisé ressemblera à quelque chose comme ceci:

Name: Geor;ge 

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

Lors de la conversion de retour à l'objet, à chaque fois que vous trouvez \ avant la ;, vous saurez que ce ; fait partie de la chaîne et non le séparateur réel. A propos de l'utilisation de la fonction de sérialisation de la langue, vous devriez pouvoir le faire mais cela dépend de la langue sur laquelle vous travaillez.

0

Au lieu de faire sérialisation manuelle, si vous voulez que votre objet dans un format lisible par l'homme, utilisez sérialisation XML automatique:

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); 
} 

Avec sérialisation XML assurez-vous que les membres que vous souhaitez dans le fichier XML sont public. private et protected ne seront pas sérialisées XML.