Le chiffrement des Données à l'aide de RSA de Clés Publique et Privée en C#
Je suis en train de chiffrer un message en utilisant la clé publique RSA et de les décrypter à l'aide de ma clé privée. Il a chiffré le message, mais je n'étais pas capable de le décrypter. Le message était encore chiffrer après le processus final. Lors de l'exportation de la clé privée, il a également inclus les clés publiques. J'ai essayé de retirer la clé publique de quitter, mais il ne serait pas travailler.
Voici les clés privées et publiques
//This is the public key
private const string public_key = "<RSAKeyValue><Modulus>uznzVPilsR1rWPkpq6m6IALaafDnVZTDDcnEyBD3A/PBx2JZTKM0DTgiTDDwCEmQBNBpPILcIBdtg3aSUgicair+2ksYrVFT+uiy0Zy1nU6qoJ+SsapLKrpCa1zHpV4LMO/pFo4Foqzw0C1FNe56FXo1xj77GPgeYl0MHUVtAUc=</Modulus><Exponent>AQAB</Exponent></RSAKeyValue>";
//This is the private and public key.
private const String private_key = "<RSAKeyValue><Modulus>uznzVPilsR1rWPkpq6m6IALaafDnVZTDDcnEyBD3A/PBx2JZTKM0DTgiTDDwCEmQBNBpPILcIBdtg3aSUgicair+2ksYrVFT+uiy0Zy1nU6qoJ+SsapLKrpCa1zHpV4LMO/pFo4Foqzw0C1FNe56FXo1xj77GPgeYl0MHUVtAUc=</Modulus><Exponent>AQAB</Exponent><P>+jPKs9JxpCSzNY+YNanz49Eo/A6RaU1DZWoFm/bawffZOompeL1jzpUlJUIrKVZJkNFvlxE90uXVwjxWBLv9BD==</P><Q>v5CVWKZ5Wo7W0QyoEOQS/OD8tkKS9DjzZnbnuo6lhcMaxsBrCWLstac1Xm2oFNtZgLtrPGbPfCNC5Su4Rz/P5w==</Q><DP>ZnyikmgobqEt20m3gnvcUDxT+nOJMsYYTklQhONoFj4M+EJ9bdy+Lle/gHSLM4KJ3c08VXgVh/bnSYnnfkb20Q==</DP><DQ>sSYGRfWk0W64Dpfyr7QKLxnr+Kv186zawU2CG44gWWNEVrnIAeUeWxnmi41CWw9BZH9sum2kv/pnuT/F6PWEzw==</DQ><InverseQ>XpWZQKXa1IXhF4FX3XRXVZGnIQP8YJFJlSiYx6YcdZF24Hg3+Et6CZ2/rowMFYVy+o999Y5HDC+4Qa1yWvW1vA==</InverseQ><D>Kkfb+8RrJqROKbma/3lE3xXNNQ7CL0F5CxQVrGcN8DxL9orvVdyjlJiopiwnCLgUHgIywceLjnO854Q/Zucq6ysm2ZRq36dpGLOao9eg+Qe8pYYO70oOkEe1HJCtP1Laq+f3YK7vCq7GkgvKAI9uzOd1vjQv7tIwTIADK19ObgE=</D></RSAKeyValue>";
//Encrypting the text using the public key
private RSACryptoServiceProvider cipher = null;
cipher = new RSACryptoServiceProvider();
cipher.FromXmlString(public_key);
byte[] data = Encoding.UTF8.GetBytes(txtUnencrypt.Text);
byte[] cipherText = cipher.Encrypt(data, false);
lblUnencryptMessage.Text = Convert.ToBase64String(cipherText);
// decryptText();
//Trying to decrypt the text using the private key
cipher = new RSACryptoServiceProvider();
cipher.FromXmlString(private_key);
byte[] ciphterText = Convert.FromBase64String(lblUnencryptMessage.Text);
byte[] plainText = cipher.Decrypt(ciphterText, false);
lblDecript.Text = Convert.ToBase64String(plainText);
Ce qui me manque ici?
Mis à jour à 11:37
Par exemple, j'ai chiffré le mot "Test", le texte crypté a été kkqs+UGHNI7/3cKhQvSnJrKzNeCBQX9xHX2VrlyMvnwtszjaofuvibzlfwmpvhqddnvurlaqqkd7971e8l3wwltfgetk9niljeo0geietlyljoy0gy3gatu++JPrqajAKxpIB75tvVlKXuYIs0qE3XWZu9bj0zaa4bvt2mhvnqm="
Le texte décrypté a été
dGVzdGluZw==
Il ne me donne pas une exception, il n'a tout simplement pas de déchiffrer le texte. J'ai mis à jour le texte original pour inclure un exemple.
Comment avez-vous générer la clé ?
OriginalL'auteur Josiane Ferice | 2013-10-08
Vous devez vous connecter pour publier un commentaire.
Il semble y avoir rien de mal avec le cryptage/décryptage de code, juste la façon dont vous traitez les données déchiffrées. Plus particulièrement, la présente ligne:
Vous prenez la restitution des données et le codage Base64, c'est pourquoi vous obtenez: dGVzdGluZw== (puisque c'est la version encodée en base 64 de la chaîne "test").
Vous devez utiliser ce qui suit:
Cela devrait convertir correctement le déchiffré tableau d'octets de la chaîne d'origine.
OriginalL'auteur Iridium
J'ai trouvé un tutoriel complet avec de la classe helper ici
Cela permettra d'expliquer comment valider JWS jeton dans asp.net environnement c#, aussi il valide l'expiration du temps.
vérifier sur le lien ci-dessous
http://www.techdoubts.net/2015/01/json-web-signature-jws-rsa-public-key-aps-net.html, il aidera les débutants.
J'ai juste présenté le contexte et l'utilisation, je pense que c'est une réponse valable pour asp.net clé publique RSA de validation asp.net.
OriginalL'auteur Biby Augustine