PDA

View Full Version : آموزش: تبدیل کد #C به PHP



majid4on
دوشنبه 10 شهریور 1393, 14:00 عصر
سلام دوستان
من یک کد دارم که به #C نوشته شده و می خوام که به PHP تبدیلش کنم
اما تو خط کدهایی که با Unicode کار کرده مشکل دارم
ممکنه راهنماییم کنین

public static string Encrypt256(string text, string publicKey, string privateKey)
{
// AesCryptoServiceProvider
var aes = new AesCryptoServiceProvider
{
BlockSize = 128,
KeySize = 256,
IV = Encoding.UTF8.GetBytes(publicKey),
Key = Encoding.UTF8.GetBytes(privateKey),
Mode = CipherMode.CBC,
Padding = PaddingMode.PKCS7
};

// Convert string to byte array
var src = Encoding.Unicode.GetBytes(text);

// encryption
using (var encrypt = aes.CreateEncryptor())
{
var dest = encrypt.TransformFinalBlock(src, 0, src.Length);
// Convert byte array to Base64 strings
return Convert.ToBase64String(dest);
}
}

arash691
دوشنبه 10 شهریور 1393, 14:04 عصر
کدهایی که قرار دادی همه مربوط به امکانات فریمورک NET. هستش ... لزوما" نمیشه گفت کد مشابه همچین چیزی تو PHP هم وجود داره ... و شاید باید از اول بنویسی ... بهتره بگی چی مخوای که از اول با PHP بنویسی بجای تبدیل کردن کد

majid4on
یک شنبه 16 شهریور 1393, 10:38 صبح
بله درست می فرمایید
در واقع من یک فانکشن می خوام که رشته ورودی رو با استفاده از الگوریتم AES به رشته رمزنگاری شده تبدیل کنه
باز هم من کدش رو نوشتم، اما مشکلم اینه که خروجی ای که باید بده با خروجی که از C#‎‎‎‎‎‎ می گیرم یکی در نمی آد
کد php هم اینه




$cipher = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_CBC, '');
$block = mcrypt_get_block_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC);
$pad = $block - (strlen($cleartext) % $block);
$cleartext.= str_repeat(chr($pad), $pad);
if (mcrypt_generic_init($cipher, $key256, $iv) != -1)
{
// PHP pads with NULL bytes if $cleartext is not a multiple of the block size..
$cipherText = mcrypt_generic($cipher,$cleartext );
mcrypt_generic_deinit($cipher);

printf("256-bit encrypted result:\n%s\n\n",base64_encode($cipherText)); echo "<br />";
}


بخاطر یکسان نبودن خروجی ها گفتم شاید تو دستورات C#‎‎‎‎‎‎ یک کارهایی انجام داده شده باشه که معادلش رو تو php انجام ندادم و بخاطر همین یکسان نمی شه..