کسی صارف کی تصدیق کرتے وقت یا اس سے ملتا جلتا کام کرتے وقت آپ کو کبھی بھی سادہ متن میں پاس ورڈ نہیں رکھنا چاہیے۔
چونکہ بہت سے افراد ایک ہی پاس ورڈ کا استعمال کرتے ہیں، اگر کسی حملہ آور کو غیر خفیہ کردہ پاس ورڈز کا ڈیٹا بیس معلوم ہوتا ہے، تو وہ آسانی سے منسلک ویب سائٹ یا اکاؤنٹ میں داخل ہونے کے لیے مماثل ای میلز کے ساتھ مل کر استعمال کیا جا سکتا ہے اور یہاں تک کہ دوسرے اکاؤنٹس تک رسائی کی کوشش کے لیے بھی استعمال کیا جا سکتا ہے۔
جب پاس ورڈ فراہم کیا جاتا ہے تو آج کل اکثر پاس ورڈ ہیش کیے جاتے ہیں۔ نمک کے ساتھ ہیش کرنے کا مشورہ دیا جاتا ہے اور نمک کو ہیش پاس ورڈ کے ساتھ ساتھ رکھیں۔
سالٹنگ ہیش براؤنز کی ترکیب میں سے ایک قدم کی طرح لگ سکتی ہے، لیکن کرپٹوگرافی میں، اس سے مراد ہیش فنکشن کے ان پٹ میں بے ترتیب ڈیٹا شامل کرنا ہے تاکہ یہ یقینی بنایا جا سکے کہ ہیش ہمیشہ ایک منفرد نتیجہ فراہم کرے گا چاہے ان پٹس ایک جیسے ہوں۔
نتیجے کے طور پر، نمک کو شامل کرنے سے تیار کردہ مخصوص ہیش ہمیں حملے کے کئی طریقوں سے بچا سکتی ہے، بشمول ہیش ٹیبل کے حملوں سے، لغت کو دبانے اور بروٹ فورس آف لائن کوششوں کے دوران۔
یہاں، کوڈ کے ٹکڑوں کی مدد سے، ہم آپ کے پاس ورڈز کو محفوظ کرنے کے لیے 'bcrypt' استعمال کرنے کا طریقہ دکھائیں گے۔
تو، 'bcrypt' کیا ہے؟
Bcrypt ایک ہیشنگ لائبریری ہے جو کئی زبانوں کو سپورٹ کرتی ہے اور پاس ورڈ کی خصوصی خفیہ کاری فراہم کرتی ہے۔ آپ کے پاس ورڈ کی حفاظت کو بڑھانے کے لیے، یہ آپ کے سٹرنگ کو خفیہ کرتے وقت خود بخود اضافی بے ترتیب حروف (نمک) پیدا کرتا ہے۔
آپ اس بات کی وضاحت کرنے کا بھی انتخاب کر سکتے ہیں کہ آپ آنے والی تار میں کتنے اضافی حروف شامل کرنا چاہتے ہیں۔
bcrypt لائبریری صرف بائٹ کوڈ پڑھتی ہے، خام تاروں کو نہیں۔ اس لیے، انکرپشن کے لیے bcrypt میں آنے والی پاس ورڈ سٹرنگ جمع کرنے سے پہلے، آپ کو پہلے اسے انکوڈ کرنا چاہیے۔
خفیہ کاری اور انکوڈنگ ایک جیسی چیزیں نہیں ہیں۔ یہ صرف اس بات کو یقینی بناتا ہے کہ انکرپشن تکنیک کے ذریعے ڈھکنے سے پہلے اسٹرنگ مشین کے پڑھنے کے قابل ہے۔
ازگر میں پاس ورڈ کو خفیہ کرنے کے لیے bcrypt کا استعمال
ازگر bcrypt پاس ورڈ کی خفیہ کاری کو آسان بناتا ہے۔ ہم فریم ورک کی مدد کے بغیر ایسا کرنے پر توجہ دیں گے۔ لیکن پریشان نہ ہوں، اگر آپ سمجھتے ہیں کہ صارف کے ان پٹس کو کیسے محفوظ کیا جائے اور انہیں ڈیٹا بیس سے کیسے پڑھا جائے، تو طریقہ کار فریم ورک میں ایک جیسا ہے۔
تنصیب
آپ کو صرف ایک Python ورچوئل ماحول قائم کرنے اور پھر PyCharm جیسے IDE کو استعمال کرنے کی ضرورت ہے۔ اس کے بعد لائبریری کو پہلے انسٹال کرنا ضروری ہے:
پاس ورڈ کو خفیہ کرنا
آئیے دیکھتے ہیں کہ انسٹال ہونے کے بعد ٹیکسٹ کو انکرپٹ کرنے کے لیے bcrypt کا استعمال کیسے کیا جائے:
مذکورہ بالا پائتھون کوڈ ایک انکرپٹڈ بائٹ سٹرنگ پر عملدرآمد اور آؤٹ پٹ کرتا ہے۔ لیکن جب بھی آپ اسکرپٹ چلاتے ہیں، نتیجہ مختلف ہوتا ہے۔ Bcrypt اس طریقہ کا استعمال اس بات کو یقینی بنانے کے لیے کرتا ہے کہ ہر صارف کے پاس پاس ورڈ ہے جو خاص طور پر انکرپٹڈ ہے۔
یہ، اتفاق سے، پاس ورڈ کی خفیہ کاری کے لیے ہے۔
Bcrypt کا استعمال کرتے ہوئے پاس ورڈ کا موازنہ اور تصدیق
کیا ہوتا ہے اگر آپ ہیش شدہ پاس ورڈ کو محفوظ کرنا چاہتے ہیں اور بعد میں یہ دیکھنے کے لیے چیک کرنا چاہتے ہیں کہ آیا یہ اس پاس ورڈ سے میل کھاتا ہے جو صارف نے تصدیق کے لیے جمع کرایا ہے؟
یہ آسان ہے۔ صرف تصدیق کرنے والے پاس ورڈ کا ڈیٹا بیس کے اندراج (یا اس معاملے میں میموری میں) سے موازنہ کیا جانا چاہیے۔
توثیق کرنے والے پاس ورڈ کا ڈیٹا بیس میں سے موازنہ کرنے سے پہلے انکوڈ ہونا بھی ضروری ہے کیونکہ bcrypt صرف بائٹ سٹرنگ پڑھ سکتا ہے۔ بنیادی طور پر، آپ ایک انکوڈ شدہ تصدیقی ان پٹ کا موازنہ ان کوڈ شدہ ہیشڈ پاس ورڈ سے کریں گے جو آپ کے پاس اس وقت آپ کے ڈیٹا بیس میں ہے۔
آئیے فرضی Python ان پٹ کا استعمال کرکے اس کی جانچ کریں:
مذکورہ کوڈ کو چلانے پر، آپ کو ایک نئے پاس ورڈ کے لیے کہا جائے گا۔ اسے Python نے میموری میں محفوظ کیا ہے۔ توثیق کرنے والے حصے میں، آپ پھر وہی پاس ورڈ درج کریں گے، جو آپ کے لیے نجی ہے۔
اگر پاس ورڈ کا موازنہ کیا جائے اور وہ جو پہلے انکرپٹ کیا گیا تھا اور میچ کو محفوظ کیا گیا تھا، تو Python کامیابی کا پیغام دیتا ہے۔
اگر نہیں، تو غلطی کا پیغام پرنٹ ہو جاتا ہے اور پھر دوسرا جملہ شامل کیا جاتا ہے۔
بنیادی خیال رجسٹر کرنے اور پھر تصدیق کے لیے ڈیٹا بیس کو پاس ورڈ فراہم کرنے کے جیسا ہے۔
نتیجہ
یہاں تک کہ جب کہ ہم نے سادہ Python کی مختصر میموری میں bcrypt کے کام کرنے کے لیے صرف خفیہ کردہ پاس ورڈز کا استعمال کیا ہے، اس کا اصل اطلاق یوزر بیس ایپس میں ہے۔
اس کے باوجود، یہ مضمون حقیقی دنیا کے حالات میں بھی، اس کو پورا کرنے کے لیے آپ کے کوڈ کو ترتیب دینے کے لیے ضروری طریقوں کو ظاہر کرتا ہے۔
مثال کے طور پر، اگر آپ فلاسک استعمال کر رہے ہیں، تو آپ ان پٹ کے بجائے علیحدہ ویب فارم کے ذریعے رجسٹریشن اور تصدیقی فیلڈ فراہم کر سکتے ہیں۔
بلاشبہ، پاس ورڈز کا موازنہ کرتے وقت، آپ ایک ڈیٹا بیس سے پڑھیں گے جس میں انکرپٹڈ پاس ورڈز ہیں جو حقیقی دنیا میں رکھے گئے ہیں۔
جونا نٹش
اس سادہ اور سادہ وضاحت کے لیے آپ کا شکریہ،
اس نے میرے موجودہ پروجیکٹ میں میری بہت مدد کی۔
میرے خیال میں یہ بہت اچھا ہے کہ مثال کا کوڈ کم سے کم تک محدود ہے اور بہت سی دوسری وضاحتوں کی طرح اوورلوڈ نہیں ہے۔
نیک تمنائیں