comment déchiffrer un texte chiffré à l'aide de RSACryptoServiceProvider?
J'ai chiffré d'un texte à l'aide de RSACryptoServiceProvider. J'ai exporté la clé publique et privée. Évidemment, je veux juste exposer la clé publique à l'intérieur du décodeur application, donc j'ai écrit un code comme suit :
private const string PublicKey = "<RSAKeyValue><Modulus>sIzQmj4vqK0QPd7RXKigD7Oi4GKPwvIPoiUyiKJMGP0qcbUkRPioe2psE/d3c1a2NY9oj4Da2y1qetjvKKFad2QAhXuql/gPIb1WmI+f6q555GClvHWEjrJrD/ho7SLoHbWd6oY6fY609N28lWJUYO97RLVaeg2jfNAUSu5bGC8=</Modulus><Exponent>AQAB</Exponent></RSAKeyValue>";
private string Decrypt()
{
byte[] encryptedKeyAsBytes = Convert.FromBase64String(_encryptedKey);
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
rsa.FromXmlString(PublicKey);
//read ciphertext, decrypt it to plaintext
byte[] plainBytes = rsa.Decrypt(encryptedKeyAsBytes, false);
string plainText = System.Text.Encoding.ASCII.GetString(plainBytes);
return plainText;
}
Mais une exception est renvoyée à la ligne "byte[] plainBytes = rsa.Décrypter(encryptedKeyAsBytes, false);"
et dit "la Clé n'existe pas." Cependant, si j'expose l'ensemble de la clé privée et publique, alors il runns heureusement. Alors, comment puis-je déchiffrer les données en utilisant uniquement la clé publique de l'information?
OriginalL'auteur user848609 | 2011-07-20
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas - c'est le point de clé publique/clé privée de chiffrement. Le public ne le chiffrement; le privé ne le déchiffrement.
Il semble que vous besoin d'une sorte d'échange de clé patron de. Par exemple, si votre décodeur application est d'essayer de décrypter les informations à partir d'une autre source de données (Source de l'Application), je voudrais mettre en place quelque chose comme ceci:
Il y a juste un exemple; mais illustre les rudiments de la façon de l'échange des données entre deux applications sans les informations sensibles transmises sur le réseau. La clé symétrique n'est pas nécessaire à tous; mais c'est un schéma très commun, car RSA commence à présenter des problèmes lors du chiffrement de grandes quantités d'informations. RSA est mieux de chiffrer une clé de chiffrement symétrique à la place.
OriginalL'auteur vcsjones
La réponse courte est: vous ne pouvez pas. Pour déchiffrer des messages vous avez besoin de la clé privée, c'est le grand principe de la cryptographie asymétrique.
Vous chiffrer les messages à l'aide de quelqu'un de la clé publique de sorte que seule la personne en possession de l'correspondant privé la clé est en mesure de les déchiffrer.
C'est pourquoi la clé publique est public, vous pouvez en toute sécurité les distribuer à la population, afin qu'ils puissent crypter les messages à être lu par vous, qui est le seul propriétaire de la clé privée correspondante.
Je veux dire, comment puis-je cacher la clé publique?
Tu veux dire cacher la clé privée, droit? Parce que vous pouvez publier la clé publique.
OriginalL'auteur emboss
Le problème, c'est que vous êtes confus de chiffrement et de signature.
De chiffrement est où n'importe qui peut écrire un message, mais seul le détenteur de la clé privée peut lire il. La signature est où n'importe qui peut lire un message, mais seul le détenteur de la clé privée peut écrire il.
Lorsque vous appelez le Décrypter, le RSACryptoServiceProvider est à la recherche d' de chiffrement, qui est, public en écriture privée de lire. Ainsi, il cherche la clé privée.
Vous souhaitez utiliser le SignData et VerifyData fonctions de signer la charge utile, de sorte que les gens ne peuvent pas écrire.
OriginalL'auteur Puppy