2011-01-21 2 views
2

J'ai un scénario dans lequel je dois sérialiser une structure dans un tableau ou une chaîne d'octets, la chiffrer, puis la stocker dans une table SQL.Quel est le meilleur fournisseur de chiffrement symétrique .net pour la taille?

Le problème est qu'il est possible que cette table s'exécute en millions de lignes et que la taille soit donc importante.

J'ai utilisé le BinaryFormatter pour sérialiser un octet [], le convertir en Ascii, puis le compresser avec le fournisseur RijndaelManaged.

Avant le cryptage, la chaîne est d'environ 230 octets. Post cryptage, il est plus de 600 octets.

Est-ce que quelqu'un sait si l'un des autres fournisseurs de services cryptographiques ferait un meilleur travail? Ou, si en effet il y a une meilleure façon que je devrais aller à ce sujet?

Merci beaucoup à l'avance,

Z

+0

qui SGBDR? .... –

+0

@Mitch, comment est-ce pertinent? – Amy

+0

Pourquoi et comment convertissez-vous des données binaires en ASCII? – bdonlan

Répondre

1

En général, les algorithmes de chiffrement ajoutent seulement les frais généraux fixes (pour IV et, dans le cas des algorithmes de chiffrement asymétriques, la clé symétrique cryptée). Si vous voyez une augmentation de 2 fois la taille, cela indique que vous faites quelque chose avant ou après le cryptage qui augmente la taille des données. Je voudrais supprimer la conversion ASCII - algorithmes de chiffrement fonctionne très bien sur les données binaires brutes - et assurez-vous que vous stockez dans la base de données comme un blob binaire brut, plutôt que base64-ing ou similaire. Si vous avez encore des problèmes, veuillez poster le code que vous utilisez.

+0

Hey - merci beaucoup pour cela. Vous avez absolument raison (mais désolé, je n'ai pas assez de 'statut' pour vous signaler en tant que tel!), Aussi - je n'ai pas vu votre message avant que j'ai posté le mien il y a quelques heures. Désolé pour ça. –

+0

@zaaaaphod, vous faites maintenant :) – bdonlan

1

J'ai trouvé le problème.

J'ai fait quelques choses 1/arrêté d'utiliser la sérialisation .net. Je remarque que le contenu sérialisé inclut des informations d'assemblage (par exemple, la culture, la version, etc.) avec chaque objet. Il le fait même lorsque vous redéfinissez ISerializable et «lancez le vôtre». Je peux voir pourquoi il a besoin de cela pour re-sérialiser ... mais je ne veux pas stocker cela dans chaque rangée. Au lieu de cela, j'ai juste construit une chaîne délimitée et l'ai convertie en un tableau d'octets. Je suis sérialisé moi-même. 2/J'ai arrêté de tenter de convertir l'octet [] en une chaîne (avec un certain type de codage) avant le cryptage. Je viens juste de passer l'octet [] en rijindal.

3/J'ai commencé à utiliser varbinary dans la table et j'écris le résultat chiffré sous forme d'octets bruts. Cela semble beaucoup plus efficace que d'essayer d'utiliser une sorte d'encodage. Donc, avec tout cela, j'ai le produit final chiffré à environ 150 octets. Grande amélioration! ... aussi, je n'ai pas encore essayé de le compresser.

Merci pour les peuples aider :-)

Z

Questions connexes