RSA Chiffrer en PHP à déchiffrer .NET
En PHP je suis en RSA le cryptage d'un message à décrypter .NET application... mais je reçois un "Mauvais Clé de" l'exception".NET....
Pour le chiffrement RSA, je suis à l'aide de la POIRE classe Crypt_RSA-> chiffrer avec la clé publique (qui est un module, exposant la paire), je reçois de travail système de cryptage .NET...
Je suppose que la question la plus facile serait-> ne "les Mauvaises Clé" signifie qu'il n'est pas en mesure de déchiffrer le message que ce soit? C'est à dire, il n'est pas chiffré correctement?
La plus difficile question-> y at-il quelque chose de précis sur le cryptage RSA, qui provoque des bizarreries entre .NET et PHP?
Pourrait-il y avoir un problème avec la clé elle-même? Caractères illisibles, problème entre UNICODE et UTF-8?
Vous pourriez être en utilisant différents rembourrages.
RE: Rembourrage: Est le sujet de la chaîne elle-même? Dans ce cas, c'est exactement 32 octets - qui est divisible par 8... alors que j'ai que de la couverture?
Problème avec la clé? Bonne question... je suppose que la Clé est bien. La même clé est utilisée pour décoder les messages sur le serveur principal de l' .NET application (je suis tout simplement en essayant de reproduire le backend version en PHP). Système de back-office fonctionne très bien. Et juste pour s'assurer que je ne suis pas absolument aucune idée là-> une clé publique RSA est juste un module et l'exposant qui est utilisé par RSA classe pour chiffrer le message, non? J'ai vu quelques références à des certificats, dont je ne suis pas en utilisant comme j'ai supposé que j'avais besoin de la clé publique.
Vous pourriez être en utilisant différents rembourrages.
RE: Rembourrage: Est le sujet de la chaîne elle-même? Dans ce cas, c'est exactement 32 octets - qui est divisible par 8... alors que j'ai que de la couverture?
Problème avec la clé? Bonne question... je suppose que la Clé est bien. La même clé est utilisée pour décoder les messages sur le serveur principal de l' .NET application (je suis tout simplement en essayant de reproduire le backend version en PHP). Système de back-office fonctionne très bien. Et juste pour s'assurer que je ne suis pas absolument aucune idée là-> une clé publique RSA est juste un module et l'exposant qui est utilisé par RSA classe pour chiffrer le message, non? J'ai vu quelques références à des certificats, dont je ne suis pas en utilisant comme j'ai supposé que j'avais besoin de la clé publique.
OriginalL'auteur user312904 | 2010-04-09
Vous devez vous connecter pour publier un commentaire.
Si vous souhaitez utiliser une solution qui ne nécessite pas l'extension openssl, essayez phpseclib de Crypt_RSA. Exemples:
Décryptage avec PKCS#1 padding:
openssl rsautl -inkey privatekey.txt -chiffrer -en plaintext.txt -hors ciphertext.txt
De chiffrement avec PKCS#1 padding:
openssl rsautl -inkey privatekey.txt -décryptage-dans ciphertext.txt -hors plaintext.txt
Décryptage avec OAEP. rembourrage:
openssl rsautl -inkey privatekey.txt -chiffrer -oaep.- plaintext.txt -hors ciphertext.txt
De chiffrement avec OAEP. rembourrage:
openssl rsautl -inkey privatekey.txt -déchiffrer -oaep.- ciphertext.txt -hors plaintext.txt
phpseclib peut être téléchargé à partir http://phpseclib.sourceforge.net/
Bonne chance!
OriginalL'auteur user260294
La Crypt_RSA sur la POIRE n'est pas à l'aide de PKCS#1 de l'encodage. Je soupçonne que c'est pourquoi .NET vous donne un message d'erreur.
Comme un exemple de la rupture, j'ai créé un script php à l'aide de Crypt_RSA pour chiffrer la chaîne "1234567" (je vais passer montrant clé de chargement):
Prendre la sortie de la tuyauterie et à travers la ligne de commande openssl outil donne l'erreur suivante:
openssl attend PKCS#1 padding par défaut, mais en y ajoutant le -raw (sans rembourrage) drapeau d'openssl n'aide pas non plus.
À l'aide de l'extension openssl en php donne le bon rembourrage (par défaut, le fichier PKCS#1, autres):
Et le déchiffrer le code en php:
Certificats dans le contexte du RSA sont X. 509 certificats, qui sont les clés RSA majoré de données sur ces touches. X. 509 certificats sont utilisés dans le protocole SSL, mais ne sont pas nécessaires à l'utilisation de RSA.
OriginalL'auteur ddrown