امین مهدی نژاد 2,142 ارسال شده در 1 فروردین، 2017 اشتراک گذاری ارسال شده در 1 فروردین، 2017 گاهی لازم میشه اطلاعات ارسالی از سرور رو برای امنیت بشتر رمزگذاری کنیم.کد زیر رمزگذاری RC4 بوده که میتونین در بی فور هم اونو دیکد کنید با استفاده از کتابخونه irUtility و کد زیر می تونید اطلاعات رو اینکد و دیکد کنید. کدش هم به همراه مثال پیوست شد <?php class RC4 { const ENCRYPT_MODE_NORMAL = 0x01; const ENCRYPT_MODE_UPDATE = 0x02; protected $password; protected $encryptMode; protected $sBox = array(); protected $si = 0; protected $sj = 0; protected $box = array(); public function __construct($password, $encryptMode = 0x01) { $this->password = $password; $validMode = array( static::ENCRYPT_MODE_NORMAL, static::ENCRYPT_MODE_UPDATE ); if ( ! in_array($encryptMode, $validMode)) { throw new InvalidArgumentException("Invalid encrypt mode."); } $this->encryptMode = $encryptMode; $this->initCipher(); } protected function initCipher() { $i = 0; $x = 0; $t = 0; $l =strlen($this->password); for($i=0; $i<256; $i++){ $this->box[$i] = $i; } for($i=0; $i<256; $i++){ $x = (($x+$this->box[$i]+ord($this->password[$i%$l]))+256) % 256; $t = $this->box[$x]; $this->box[$x] = $this->box[$i]; $this->box[$i] = $t; } } public function encrypt($data) { $t=0; $o=0; $i=0; $j = 0; $l =strlen($data); $out = array(); for($c=0; $c<$l; $c++){ $i = ($i+1) % 256; $j = ($j+$this->box[$i]) % 256; $t = $this->box[$j]; $this->box[$j] = $this->box[$i]; $this->box[$i] = $t; $o = $this->box[($this->box[$i] + $this->box[$j]) % 256]; $out[$c] =(ord($data[$c]) ^ $o); } $string = ""; foreach ($out as $chr) { $string .= chr($chr); } return $string; } protected function resetCipher() { $this->initCipher(); } public function decrypt($plaintext) { return $this->encrypt($plaintext); } } نحوه استفاده <?php require __DIR__ . "/RC4.php"; $password ="pass"; $plaintext = "answercenter.ir"; //اینکد $encryptor = new RC4($password); $ciphertext = base64_encode($encryptor->encrypt($plaintext)); echo $ciphertext."<br />"; //دیکد $encryptor = new RC4($password); $ciphertext = $encryptor->encrypt(base64_decode($ciphertext)); echo $ciphertext."<br />"; ?> RC4-PHP «موفق باشید.» لینک ارسال به اشتراک گذاری در سایت های دیگر تنظیمات بیشتر اشتراک گذاری ...
fun_code 222 ارسال شده در 5 خرداد، 2017 اشتراک گذاری ارسال شده در 5 خرداد، 2017 سلام در ابتدا از اشتراک گذاری این مطلب بسیار کاربردی تشکر میکنم... اما چرا با اجرای کدهای بخش نحوه استفاده ، خروجی ای نمیبینیم ! با جستجو متوجه شدم که دستور echo نمیتونه آرایه رو نمایش بده... پس بجاش دستور print_r رو گذاشتم. با این حال در دیکد کردن مشکل داره ... مثلا نتیجه کد زیر : <?php require __DIR__ . "/RC4.php"; $password ="test"; $plaintext = "answercenter.ir"; //اینکد $encryptor = new RC4($password); $ciphertext = $encryptor->encrypt($plaintext); print_r($ciphertext); echo "<br />"; //دیکد $encryptor = new RC4($password); $ciphertext = $encryptor->encrypt($ciphertext); print_r($ciphertext); ?> میشود : Array ( [0] => 207 [1] => 225 [2] => 84 [3] => 102 [4] => 133 [5] => 88 [6] => 30 [7] => 64 [8] => 184 [9] => 58 [10] => 56 [11] => 17 [12] => 63 [13] => 205 [14] => 149 ) Array ( ) چطور این مورد رو برطرف کنیم ؟ با سپاس لینک ارسال به اشتراک گذاری در سایت های دیگر تنظیمات بیشتر اشتراک گذاری ...
امین مهدی نژاد 2,142 ارسال شده در 9 شهریور، 2017 سازنده اشتراک گذاری ارسال شده در 9 شهریور، 2017 در در 1395/12/15, 12:46:16، nima_j گفته است : سلام در ابتدا از اشتراک گذاری این مطلب بسیار کاربردی تشکر میکنم... اما چرا با اجرای کدهای بخش نحوه استفاده ، خروجی ای نمیبینیم ! با جستجو متوجه شدم که دستور echo نمیتونه آرایه رو نمایش بده... پس بجاش دستور print_r رو گذاشتم. با این حال در دیکد کردن مشکل داره ... مثلا نتیجه کد زیر : <?php require __DIR__ . "/RC4.php"; $password ="test"; $plaintext = "answercenter.ir"; //اینکد $encryptor = new RC4($password); $ciphertext = $encryptor->encrypt($plaintext); print_r($ciphertext); echo "<br />"; //دیکد $encryptor = new RC4($password); $ciphertext = $encryptor->encrypt($ciphertext); print_r($ciphertext); ?> میشود : Array ( [0] => 207 [1] => 225 [2] => 84 [3] => 102 [4] => 133 [5] => 88 [6] => 30 [7] => 64 [8] => 184 [9] => 58 [10] => 56 [11] => 17 [12] => 63 [13] => 205 [14] => 149 ) Array ( ) چطور این مورد رو برطرف کنیم ؟ با سپاس درسته من در مثال بالا برای راحتی کار و حل این مشکل از Base64 استفاده کردم. شما هم همینکار رو انجام بدین. base64_encode($encryptor->encrypt($plaintext)); «موفق باشید.» لینک ارسال به اشتراک گذاری در سایت های دیگر تنظیمات بیشتر اشتراک گذاری ...
ارسالهای توصیه شده
بایگانی شده
این موضوع بایگانی و قفل شده و دیگر امکان ارسال پاسخ نیست.