Comment appeler Rijndaelalg.createReCryptor en C # correctement lors de l'enregistrement de nombreux fichiers indépendants

StackOverflow https://stackoverflow.com/questions/3273672

Question

Dans ma situation, j'ai un certain nombre de fichiers qui seront stockés sur un serveur. Chacun de ces fichiers est créé par une application C # que j'écris.

arrière-plan: Pour cette application, le temps nécessaire pour chiffrer n'est pas important, les fichiers ont tendance à être petits et nous avons beaucoup de cycles de CPU à épargner (le client est le seul ordinateur qui crypte ou déchiffre les données).

Chaque fichier n'est pas liée et j'ai besoin que le contenu soit protégé de Snooping par la sysadmin ou quiconque attire le disque dur (supposons un mauvais gars)

Ma compréhension est que Rijndaelalg est un algorithme solide pour ce type d'opération? En supposant que cela concerne les informations, c'est correct comment j'utiliserai correctement la fonction Rijndaelalg.CreateCryptor?

La convivialité que je veux, c'est que mon utilisateur tape dans un mot de passe, suppose que le mot de passe est un bon mot de passe.

mes questions sont

  1. La meilleure solution pour convertir une chaîne entrée par l'utilisateur (C # '' String) en un octet []? Je suppose que je devrais avoir le hasch pour contourner le problème d'avoir 0 sur tous les autres personnages? Quelle est la meilleure façon de faire cette conversion?

  2. qu'est-ce que j'utilise pour le IV? C'est ma compréhension que c'est une valeur qui devrait être peuplée (même si MSDN dit que c'est bien de passer 'null'). qu'est-ce que j'utilise pour cette valeur? N'oubliez pas de ma situation, j'ai un groupe de fichiers indépendants qui doivent être déchiffrés de manière indépendante.

    Et si le IV est bien connu, est-ce un problème? (Puis-je utiliser un hachage de nom de fichier puisqu'il s'agit d'une valeur unique)

  3. Y a-t-il un meilleur algorithme que Rijndaelalg pour crypter de nombreux fichiers indépendants en utilisant le même mot de passe?

Était-ce utile?

La solution

Q1.J'utilise habituellement la méthode Getbytes () de la classe UTF8 pour convertir des chaînes à des tableaux d'octets.

Encoding.UTF8.GetBytes(myString)

Q2.Chaque fois que vous créez une instance de la classe Rijndaélanie, un IV est généré aléatoirement pour vous (accessible à l'aide de la propriété IV).Vous pouvez randomiser à nouveau à nouveau en appelant la méthode générateur ().

Comme vous avez besoin de cette IV pour déchiffrer des données, vous risquez peut-être mieux de stocker cette IV quelque part au lieu d'avoir un IV unique par fichier.Si vous chiffrez tous vos fichiers à l'aide d'un IV statique, assurez-vous de définir le IV lorsque vous créez une nouvelle instance de la classe Rijndaélanie à tout moment, vous déchiffrez un fichier.

Q3.Rijndaelmanaged / AES est l'algorithme le plus sûr, je n'utiliserais rien d'els.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top