السلام عليكم ورحمة الله وبركاته
هل أصبحت خوارزمية التشفير MD5 غير آمنة ويمكن كسرها بسهولة ؟ خصوصا أن هنالك آلاف المواقع والبرامج التي تفك هذا النوع من التشفير بسهولة.
وإذا لم تعد آمنة فما هو البديل ؟؟
md5 كانت ولا زالت تمتلك شعبية كبيرة لأنها أتبتث جدارتها في التسفير لسنوات - لكن المشكل هو أن توسعها الكبير في مختلف البرمجيات
جعل منها محط الأعين - وتم جمع قواعد بيانات ضخمة تستعمل للمقارنة لايجاد فك التشفير نسبيا
لكن الأمر غير مضمون بالطبع ولكن لسوء الحظ الأمر يعتمد على كلمة السر بالتأكيد بحيث بامكانك فك معضم كلمات السر السهلة
توجد عدة طرق لضمان تشفير امن نسبيا
مثلا اعادة تشفير كلمة السر
$password = md5(md5(md5($password)));
لكن دلك لا يزيد شيئا غير مدة فك التشفير
ومع دللك بالامكان استخدام md5 للتشفير باضافة تشفير تاني لها
عادة استخدم هدا الكلاس لاعادة تشفير md5 - بامكانك استخدام مفتاح خاص بك لاعادة التشفير
var $skey = "your-key";
class crypte { //do not change it again (loknhytgvfrredcsxea) var $skey = "loknhytgvfrredcsxea";
public function safe_b64encode($string) {
$data = base64_encode($string);
$data = str_replace(array('+','/','='),array('-','_',''),$data);
return $data;
}
public function safe_b64decode($string) {
$data = str_replace(array('-','_'),array('+','/'),$string);
$mod4 = strlen($data) % 4;
if ($mod4) {
$data .= substr('====', $mod4);
}
return base64_decode($data);
}
//// Encode ////
public function encode($value){
if(!$value){return false;}
$text = $value;
$iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
$crypttext = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $this->skey, $text, MCRYPT_MODE_ECB, $iv);
return trim($this->safe_b64encode($crypttext));
}
//// Decode ////
public function decode($value){
if(!$value){return false;}
$crypttext = $this->safe_b64decode($value);
$iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
$decrypttext = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $this->skey, $crypttext, MCRYPT_MODE_ECB, $iv);
return trim($decrypttext);
}
}
يمكنك هدا الكلاس من تشفير و اعادة الفك
لحد الان لا يوجد أي فك تشفير مضمون ل md5 فمعضمها يعتمد على قواعد بيانات ضخمة تقوم بالمقارنة لفك التشفير نسبيا.
استخدام نفس التشفير مرتين لا ينجح بل ولا يزيد من قوة التشفير مثلا إزاحة الحروف بمقدار 13 حرف rot13. يظهل التشفير ضمن نفس فضاء القوة لو استخدمته 100 مرة داخل بعض.
استخدام md5 مرتين قد يحميك على مبدأ security by minority وهي لا تعمل ولا ينصح بها.
الطريقة الصحيحة هي استخدام salt عشوائي مختلف لكل مستخدم.
هناك شيء قريب من تركيب md5 على md5 لعله هو الذي تريده واسمه خوارمزية HMAC ويستخدم لدمج رسالة ومفتاح.
التعليقات