C# RSA et PHP

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : C# RSA et PHP

Re: C# RSA et PHP

par @rthur » 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

Re: C# RSA et PHP

par mehdi81101 » 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 ?

Re: C# RSA et PHP

par @rthur » 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

C# RSA et PHP

par mehdi81101 » 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 }