C# RSA et PHP

Petit nouveau ! | 2 Messages

03 sept. 2021, 09:30

Bonjour bonjour,

Ayant débuté le php récemment, je me demandais quel était le problème dans mon code. Je m'explique : via du C# que je maitrise plutôt bien, j'essaie d'envoyer une clé aes chiffré avec une clé rsa public (donc déchiffrable par la clé rsa privée) or je ne recoit que du vide coté C# et php (vu que l'echo est censé me renvoyer ma clé aes déchiffrée pour tester.

Une idée ?

C#:

Code : Tout sélectionner

string key = ((string)json.rsaPublic).Replace("-----BEGIN PUBLIC KEY-----", "").Replace("-----END PUBLIC KEY-----", ""); byte[] toEncrypt = Encoding.UTF8.GetBytes(Utils.tempAESKey); RSACryptoServiceProvider RSA = new RSACryptoServiceProvider(); RSAParameters RSAKeyInfo = RSA.ExportParameters(false); RSAKeyInfo.Modulus = Encoding.Default.GetBytes(key);//Public Key RSA.ImportParameters(RSAKeyInfo); string encryptedAESKey = Convert.ToBase64String(RSA.Encrypt(toEncrypt, false)); string sendAES = httpRequest.Post("requestWithencryptedAESKey").ToString(); MessageBox.Show(sendAES);//Empty
PHP:

Code : Tout sélectionner

if ($conn->query($sql) == TRUE) { $row = $res->fetch_assoc(); $arr = $row['rsaPrivate']; $replaceBegin = str_replace("-----BEGIN PRIVATE KEY-----", "", $arr); $replaceEnd = str_replace("-----END PRIVATE KEY-----", "", $replaceBegin); openssl_private_decrypt(base64_decode($PostAESKey), $PostDecryptedAES , openssl_pkey_get_private($arr) ) ; //does not work echo $PostDecryptedAES; //does not work }

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

06 sept. 2021, 11:57

Bonjour,

Tu peux utiliser openssl_error_string() pour voir quel est le message d'erreur éventuel après openssl_private_decrypt()
https://php.net/openssl_error_string

Pour aider au debugage, fais aussi des var_dump() des variables que tu passes en paramètres de openssl_private_decrypt()

Notamment, ça devrait te montrer que tu effectues un remplacement que tu stockes dans la variable $replaceEnd mais qui ne sert à rien puisque ensuite tu utilises la variable $arr
Quand tout le reste a échoué, lisez le mode d'emploi...

Petit nouveau ! | 2 Messages

06 sept. 2021, 16:46

Bonjour ,
Alors oui j'ai remplacé le $arr par $replaceEnd ca c'était une erreur de ma part. J'ai également utilisé openssl_error_string() et l'erreur est la suivante :

error:0909006C : PEM routine:get_name:no start line

et maintenant j'ai : data greater than mod len ?

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

07 sept. 2021, 09:33

error:0909006C : PEM routine:get_name:no start line
Tu as essayé sans supprimer les lignes de début et fin de clé ?
Car il me semble qu'il n'est pas nécessaire de les supprimer.
et maintenant j'ai : data greater than mod len ?
Une piste potentielle ici : https://stackoverflow.com/questions/232 ... an-mod-len
Quand tout le reste a échoué, lisez le mode d'emploi...