OVH Cloud OVH Cloud

problème crypto 3des c#/php

1 réponse
Avatar
wmn
bonjour,

J'ai une appli c# qui échange des données cryptées 3des avec du code
php. Les résultats du chiffrement en c# et php que j'obtiens sont
différents. J'ai du faire une erreur quelque part !

y a t-il quelqu'un qui a une solution qui fonctionne ?




ci-dessous mon code c#
-------------------------------------------------
string skey = "VnmqrY47Vmdpnbi+mxY9SxFaKRoXLvjm";
string siv = "rjAVHTGeTs4=";
string data = "le texte que je veux chiffrer";

SymmetricAlgorithm tDes = new TripleDESCryptoServiceProvider();
tDes.Key = Convert.FromBase64String(skey);
tDes.IV = Convert.FromBase64String(siv);

ICryptoTransform ict = tDes.CreateEncryptor(tDes.Key, tDes.IV);
byte[] ab = Encoding.UTF8.GetBytes(data);

MemoryStream ms = new MemoryStream();
CryptoStream cs = new CryptoStream(ms, ict, CryptoStreamMode.Write);
cs.Write(ab, 0, ab.Length);
cs.FlushFinalBlock();
cs.Close();

console.writeline(Convert.ToBase64String(ms.ToArray()));





ci-dessous mon code php
-------------------------------------------------
$skey = "VnmqrY47Vmdpnbi+mxY9SxFaKRoXLvjm";
$siv = "rjAVHTGeTs4=";
$data = "le texte que je veux chiffrer";

$key = base64_decode($skey);
$iv = base64_decode($siv);

echo base64_encode(mcrypt_cbc(MCRYPT_3DES, $key, $data,
MCRYPT_ENCRYPT, $iv));


wmn.

1 réponse

Avatar
Emmanuel Dreux [ MS ]
Bonjour,

votre chaine à encrypter est codée en UTF-8:
byte[] ab = Encoding.UTF8.GetBytes(data);

Faites attention, je ne suis pas sûr que ce soit le cas en PHP par défaut.

--
Cordialement,
Emmanuel Dreux


"wmn" wrote in message
news:45812f2e$0$21145$
bonjour,

J'ai une appli c# qui échange des données cryptées 3des avec du code php.
Les résultats du chiffrement en c# et php que j'obtiens sont différents.
J'ai du faire une erreur quelque part !

y a t-il quelqu'un qui a une solution qui fonctionne ?




ci-dessous mon code c#
-------------------------------------------------
string skey = "VnmqrY47Vmdpnbi+mxY9SxFaKRoXLvjm";
string siv = "rjAVHTGeTs4=";
string data = "le texte que je veux chiffrer";

SymmetricAlgorithm tDes = new TripleDESCryptoServiceProvider();
tDes.Key = Convert.FromBase64String(skey);
tDes.IV = Convert.FromBase64String(siv);

ICryptoTransform ict = tDes.CreateEncryptor(tDes.Key, tDes.IV);
byte[] ab = Encoding.UTF8.GetBytes(data);

MemoryStream ms = new MemoryStream();
CryptoStream cs = new CryptoStream(ms, ict, CryptoStreamMode.Write);
cs.Write(ab, 0, ab.Length);
cs.FlushFinalBlock();
cs.Close();

console.writeline(Convert.ToBase64String(ms.ToArray()));





ci-dessous mon code php
-------------------------------------------------
$skey = "VnmqrY47Vmdpnbi+mxY9SxFaKRoXLvjm";
$siv = "rjAVHTGeTs4=";
$data = "le texte que je veux chiffrer";

$key = base64_decode($skey);
$iv = base64_decode($siv);

echo base64_encode(mcrypt_cbc(MCRYPT_3DES, $key, $data, MCRYPT_ENCRYPT,
$iv));

wmn.