Le cryptage/Décryptage de fichiers volumineux (.NET)
J'ai à chiffrer, magasin, puis plus tard décrypter des fichiers volumineux. Quelle est la meilleure façon de le faire? J'ai entendu le chiffrement RSA est cher et il a été informé de l'utilisation de RSA pour crypter une clé AES, puis utilisez la clé AES pour chiffrer les fichiers de grande taille. Toutes les suggestions par exemple sera grande.
- Voici un exemple blog, avec téléchargeable projet Visual Studio 2010 qui ne fait que cela.
Vous devez vous connecter pour publier un commentaire.
Un organisme de grandes est une autre de la petite, même si nous savons tous cher quand on le voit. Clin d'oeil, clin d'oeil.
Essayer de benchmarking quelque chose comme ce qui suit dans votre environnement et de voir où vous en êtes:
MODIFIER 2/13/2012: Le code a été mis à jour comme je le suis devenu (imperceptible) plus intelligente et également remarqué un peu de couper /" coller erreurs qui s'étaient glissées dans. Mea culpa.
source.FlushFinalBlock()
aprèssource.CopyTo(crytoStream);
autre personne, vous serait effectivement mis le dernier bloc.Cela peut aider
source:
http://www.codeproject.com/Articles/26085/File-Encryption-and-Decryption-in-C
Généralement la stratégie que vous avez décrit est utilisé lorsque les données seront cryptées sur une machine (comme un serveur), puis déchiffrées par un autre ordinateur (client). Le serveur crypte les données en utilisant le cryptage à clé symétrique (pour la performance) avec une nouvelle clé générée et chiffrer cette clé symétrique avec une clé publique (correspondant à un client clé privée). Le serveur envoie au client à la fois les données chiffrées et la clé symétrique chiffrée. Le client peut déchiffrer la clé symétrique avec sa clé privée, puis utiliser cette clé symétrique pour décrypter les données.
Si vous êtes de crypter et décrypter les données sur la même machine, il ne peut faire sens pour utiliser à la fois du RSA et AES que vous ne seriez pas en essayant de passer la clé de chiffrement à l'autre de la machine.
Comme vous l'avez entendu cryptographie asymétrique, comme le RSA, est beaucoup plus lente que la cryptographie symétrique (par exemple, AES), mais il n'ont ses avantages (plus simple la gestion des clés, par exemple, une clé privée pour protéger).
La clé (pun intended) est d'utiliser les avantages des deux (la clé privée de l'asymétrie et de la vitesse de la symétrie) tout en ignorant les inconvénients de l'autre (beaucoup de clés secrètes et de ralentir la vitesse).
Vous pouvez le faire en utilisant RSA une fois par fichier (pas un grand impact sur les performances) pour crypter un (symétrique) clé secrète est utilisée pour chiffrer (beaucoup plus rapide) de votre fichier de grande taille. Cette *emballage de la clé symétrique permet de gérer qu'une seule clé privée.
Voici un lien vers mon vieux (mais toujours vrai) post de blog qui donne un exemple pour ce faire à l'aide de C# et de la .NET framework de Microsoft Mono).