امین مهدی نژاد 2,142 ارسال شده در 12 دی، ۱۳۹۵ اشتراک گذاری ارسال شده در 12 دی، ۱۳۹۵ گاهی لازم میشه اطلاعات ارسالی از سرور رو برای امنیت بشتر رمزگذاری کنیم.کد زیر رمزگذاری 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 216 ارسال شده در 15 اسفند، ۱۳۹۵ اشتراک گذاری ارسال شده در 15 اسفند، ۱۳۹۵ سلام در ابتدا از اشتراک گذاری این مطلب بسیار کاربردی تشکر میکنم... اما چرا با اجرای کدهای بخش نحوه استفاده ، خروجی ای نمیبینیم ! با جستجو متوجه شدم که دستور 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 ارسال شده در 19 خرداد، ۱۳۹۶ سازنده اشتراک گذاری ارسال شده در 19 خرداد، ۱۳۹۶ در در 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)); «موفق باشید.» لینک ارسال به اشتراک گذاری در سایت های دیگر تنظیمات بیشتر اشتراک گذاری ...
ارسالهای توصیه شده
بایگانی شده
این موضوع بایگانی و قفل شده و دیگر امکان ارسال پاسخ نیست.