2009-10-27 4 views
1

J'essaie de mettre en place un cryptage RSA côté serveur simple d'un petit morceau d'information qui doit être déchiffré du côté client. Juste comme preuve de concept j'ai écrit quelques lignes pour m'assurer que la clef publique et privée pourrait être chargée du xml. Cependant, je me bats pour faire le travail même de choses les plus simples sur ma machine:C# RSA crypter/décrypter lève l'exception

byte[] bytes = Encoding.UTF8.GetBytes("Some text"); 
    bool fOAEP = true; 

    // seeding a public and private key 
    RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(); 
    var publicKey = rsa.ToXmlString(false); 
    var privateKey = rsa.ToXmlString(true); 

    //server side 
    RSACryptoServiceProvider rsaServer = new RSACryptoServiceProvider(); 
    rsaServer.FromXmlString(privateKey); 
    var encrypted = rsaServer.Encrypt(bytes, fOAEP); 

    //client side 
    RSACryptoServiceProvider rsaClient = new RSACryptoServiceProvider(); 
    rsaClient.FromXmlString(publicKey); 
    var decrypted = rsaClient.Decrypt(encrypted, fOAEP); 

Le dernier appel à Déchiffrer jeter un CryptographicException avec le message « Une erreur est survenue lors du décodage remplissage OAEP. ». Je dois manquer quelque chose de totalement évident ici. Ai-je besoin de plus de configuration des instances de RSA ou peut-être de l'instance initiale de SSRA?

Répondre

6

Vous devez utiliser une clé publique pour le chiffrement et une clé privée pour le déchiffrement. Jetez un coup d'oeil ici: RSACryptoServiceProvider decrypt with public key

Maintenant, revenons à la classe RSACryptoServiceProvider. La méthode cryptée crypte UNIQUEMENT à l'aide de la clé publique et la méthode Decrypt décrypte uniquement à l'aide de la clé privée.

+0

Merci Nikolay ... Je m'attendais à quelque chose d'aussi évident que ça :) –

+0

:) De rien. –