Nasıl benim C # ve PHP çözme yöntemleri farklı?

0 Cevap

Ben bazı C # kodu miras ve PHP port bunu gerekir ettik. İşte:

string key = "some key";
string strEncrypted = "some encrypted string";

byte[] hashedKey = new MD5CryptoServiceProvider().ComputeHash(UTF8Encoding.UTF8.GetBytes(key));
byte[] strToDecrypt = Convert.FromBase64String(strEncrypted);

TripleDESCryptoServiceProvider tripleDES = new TripleDESCryptoServiceProvider();
tripleDES.Key = hashedKey;
tripleDES.Mode = CipherMode.ECB;

string strDecrypted = UTF8Encoding.UTF8.GetString(tripleDES.CreateDecryptor().TransformFinalBlock(strToDecrypt, 0, strToDecrypt.Length));

Benim PHP kodu bu gibi görünüyor:

$key = 'some key';
$str_encrypted = 'some encrypted string';

$hashed_key = md5($key, TRUE);
$str_to_decrypt = base64_decode($str_encrypted);

// The IV isn't used for ECB, but it prevents a warning.
$iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_TRIPLEDES, MCRYPT_MODE_ECB), MCRYPT_RAND); 

$str_decrypted = mcrypt_decrypt(MCRYPT_TRIPLEDES, $hashed_key, $str_to_decrypt, MCRYPT_MODE_ECB, $iv);

Ama iki şifresi değerleri aynı değildir, ve ben neden bilemiyorum. Burada ve başka bir yerde benzer bir çok soru okudum, ama bunların hiçbiri ben yaşıyorum sorunu açıklamak gibi görünüyor.

Gerçekten şifresi PHP dizge şifresi C # dize eşleşmiyor neden bulmaktan herhangi bir yardım takdir ediyorum.

0 Cevap