رمزنگاری و hash در جاوا اسکریپت

به نام دانای بر حق

 

مقدمه

یکی از مسائلی که کاربرد های امنیتی زیادی داره استفاده از سیستم های های رمزنگاری و hash و حتی encoding هستش، خب حالا یکی از مسائلی که میشه بهش اشاره کرد این هستش که جاوا اسکریپت یکی از زبان های خانواده اسکریپت هاس همونطور که از اسمش پیداس و اما یه تفاوت خیلی مهم بین javascript  و سایر زبان های اسکریپت نویسی دیگر مثل php و python هستش اونم این هستش که js یه زبان سمت کاربر هستش یعنی قسمت های کد اون در سمت رایانه های سرور اجرا نمیشود و بر روی سیستم بازدید کننده های وب اجرا میشود و اما یه نکته اساسی هستش که جاوااسکریپت هم در تشخیص داده های دودوی یا باینری ضعیف عمل میکنه واسه همین  پیاده سازی hash ها و encryption ها سخت هستش.

 

معرفی کتابخونه crypto js

یک کتابخونه قوی در زمینه hash و رمزنگاری و حتی کدگذاری در انباری کد های گوگل یافت میشود که توسط Jeff.Mott.OR نوشته شده است که جای تحسین دارد برای استفاده از اون و میشه ازالگورتیم هایی که کتابخونه  CryptoJS نام دارد الگوریتم های :  MD5, SHA-1, SHA-2, SHA-3, HMAC, PBKDF2, AES, TripleDES, Rabbit, RC4 نام برد.

CryptoJS حال حاضر نسخه 3.1.2 هستش و در سایت گوگل برای ما تحریم می باشد دیدن صفحه اش و صفحه ی اصلیش این صفحه است و برای گذر از تحریم ما کتابخونه اش رو که به حجم ۱۵۵ کیلوبایت هست رو درانتهای این نوشته پیوست می کنیم.

نحوه استفاده

اول باید عرض کنم بهترین مرجع برای دیدن نحوه استفاده صفحه ای هستش که در بند فوق ذکر شد، اما ما در این از ۴ مثال استفاده میکنم برای استفاده:

مثال اول یک hash معمول MD5:

منظور از معمول بدون دستکاری هستش برای این کار باید کتابخونه اون رو فراخونی کننین و کد رو به شکل زیر اجرا کنید:

 یک hash تعمیم یافته و یا شخصی سازی شده:

ما در مثال های دیگر از نمایش امتناع می کنیم و از SHA256 استفاده می کنیم:

 یک مثال از encoding با base64 :

در خطوط زوج خط ابتدا  اندکد کردن و خط بعدی دیکود کردن است:

آخرین مثال از AES و یه رمزنگاری و رمزگشایی می باشد:

خط ابتدایی اطاعات رو رمزنگاری می کند و خط بعدی رمزگشایی:

 

خلاصه:

خلاصه کلام این که ما با این کتابخونه آشنا شدیم و میتونیم نیاز هامون رو باهاش برآورده کنیم و از خودمون رو دز محدودیت کد نویسی جاوا اسکریپت نبینیم، و اما یکی از مزیت های این موضوع این هستش که شما میتونید الگورتیم های خودتون رو cross platform اجرا کنین بدون این دغدغه سیستم عامل و موضوع بعدی استفاده از این روش برای کد شده اطلاعات در سمت سرور و دریافت آن در سمت سرور و از حالت کد شده خارج کردن هستش که موجب میشود تا رهگیری و بررسی بی مورد مثل فیـــ—–ــلـــــ—-ترینگ  bypass شوند که وب پــــروکـــــســـی ها هم از این روش استفاده می کنند.

امیدوارم مفید واقع شده باشه.

 

‌A1Gard

اول از همه کوچک ترین عضو مجموعه 4xmen بنده حقیر هستم. در ثانی یک توسعه دهنده هستم زمینه های تخصصی کارم :‌ Delphi, PHP, C++ ,Python, JavaScript, Unity game engine, C#, asm و علاقه مند به لینوکس، RCE ، کریپتوگرافی هستم. تا الان حضرت حق اینا رو به ما داده و هر وقت که بخواد ازمون میگیره دست خودشه. یا حق، با حق، تا حق

More Posts

3 thoughts on “رمزنگاری و hash در جاوا اسکریپت”

  1. بعد از خوندن مطالب این صفحه یی سوال برام پیش اومد:

    میخواستم بپرسم آیا از این روش میشه برای خلاص شدن از این محدودیتهایی که در پایان اشاره شد ، استفاده کرد ؟
    به فرض اسکریپتی نوشت که درخواستها و پاسخها رو کد شده فرستاد و گرفت !
    شاید مزیتش این باشه که دور زدن فیلهارو سبکتر و سریعتر از پروکسی انجام بده ! و نیاز به سرور دیگه نباشه !
    فکر میکنید اینکار شدنی هست یا از لحاظ فنی غیر ممکن هست چنین کاری ؟

    ممنون از شما

    1. این کار شدنی هستش اما سریع تر از پروکــسی های معمول نیست!
      روش های زیادی وجود داره برای اعمال این عمل من خودم چند ماه پیش یه addon فایرفاکس نوشتم و بسیاری از این محدودیت ها رو باهاش دور میزدم.
      اما سرعت قابل توجهی نداشت و بدون سرور دیگه امکان پذیر نیست
      ولی برای کد کردن و ارسال اطلاعات مخدوش شدن اصل اطلاعات خیلی کاربردی و مفید است. یعنی مقابله با sniff

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *