خانه » ادوبی فلش » روشی ساده برای کدگذاری روی String

روشی ساده برای کدگذاری روی String

روشی ساده برای کدگذاری روی String

در این مطلب نحوه encrypt کردن مقادیر String آموزش داده می‌شود. در این روش دو آرایه از حروف و مقادیر معادل حروف تعریف می‌شود. به این صورت که یک مقدار String گرفته می‌شود و سپس حروف آن جدا می‌شوند و به ازای هر حرف مقدار معادل آن قرار داده می‌شود.

۱- برای شروع یک پروژه Action Script 3 بسازید.

۲- ابتدا آرایه حروف را تعریف می‌کنیم، برای مثال در این جا فقط ۱۰ کاراکتر در این آرایه قرار گرفته است. برای کامل شدن کاراکترها باید همه حروف کوچک و بزرگ انگلیسی، اعداد، حروف فارسی و نمادها نیز اضافه شوند.

var letters:Array = ["a", "b", "c", "d", "e", "f", "g", "A", "B", "C"];

۳- حالا آرایه معادل حروف تعریف می‌شود. در این جا برای مثال به ازای هر حرف، از سه کاراکتر استفاده شده است. دقت کنید که برای همه کاراکترهایی که در آرایه حروف قرار گرفته اند باید یک معادل با ۳ کاراکتر (البته بستگی به انتخاب شما دارد) تعریف شود.

var codes:Array = ["lI$", "#@d", "!dR", "a~1", "^Lg", "lkd", "^%(", "()9", "LB%", "#!D"];

4- حالا تابعی که برای کدگذاری استفاده می‌شود را تعریف می‌کنیم. در این تابع ابتدا حروف یک کلمه ورودی از هم جدا می‌شوند، سپس اندیس این کاراکتر در آرایه حروف با کد indexOf پیدا می‌شود و در ادامه معادل این اندیس در آرایه معادل یافت می‌شود.

function Encode(Word:String):String
{
	var temp:String = "";
	for (var i:Number = 0; i < Word.length; i++)
	{
		temp +=  codes[letters.indexOf(Word.slice(i,i + 1))];
	}
	return temp;
}

5- حالا نیاز به تابعی داریم که بتواند مقادیر کد شده را به حالت اول برگرداند، بنابراین در این تابع باید حروف کلمه ورودی را سه تا سه تا (یا هر تعدادی که در نظر گرفتید) جدا کرد، سپس اندیس این ۳ کاراکتر باید در آرایه معادل پیدا شود و در نهایت مقدار معادل اندیس در آرایه حروف یافت شود.

function Decode(Word:String):String
{
	var temp:String = "";
	for (var i:Number=0; i < Word.length-2; i +=3)
	{
		temp +=  letters[codes.indexOf(Word.slice(i,i + 3))];
	}
	return temp;
}

6- با توجه به این که هر دو تابع یک خروجی String دارند، بنابراین می‌توان از آنها به راحتی استفاده کرد. برای مثال:

trace(Encode("adA")); // Output: lI$a~1()9
trace(Decode("lI$a~1()9")); // Output: adA
trace(Decode(Encode("adA"))); // Output: adA
Print Friendly
تگ ها :
پیوند مطلب قبلی
پیوند مطلب بعدی

درباره بهروز پولادرگ

متولد : ۵ مرداد سال ۱۳۶۷ ، حرفه : ادوبی فلش ، برنامه نویسی و طراحی وب ، طراحی گرافیک ، مالتی مدیا ، نرم افزار های تحت وب

13 نظر

  1. سلام بهروز جان، گویا چند روزه سایت مرکز فلش حسابی به هم ریخته و فرصت ندارم درستش کنم … راستی منتظر “پرنده های خشمگین” هستیم، بنده حاضرم از همین حالا پیش خرید کنم 😀 … موفق باشی

  2. سلام اقا بهروز یه سوال داشتم ازتون ..

    چطور میشه که یه نفری یه سایت فلشی طراحی کرده بعد وقتی کیلک راست روی صفحه میکنی اسم طراح و سایت سازنده میاد..مثل ادرس بالای ک گذاشتنن…میخواستم چه طوری میشه اسم طراح رو تو قسمت کیلک راست سایت فلش قرار داد ..اگه میشه یه توضیحی بدید ممنون میشم

  3. دستت درد نکنه ..خیلی آقای

  4. سلام آقای پولادرگ
    خیلی مطلب جالب و مفیدی بود من خیلی وقت بود دنبال همچین چیزی بودم
    از قرار معلوم شما این رو از منبع جای دیگه ای نگرفتید چون توی سایت های خارجی و ادوبی هم خیلی گشتم ولی چیزی مثل این پیدا نکردم
    خیلی عالی
    من چهار ساله دارم فلش کار می کنم و دو سال هم اکشن اسکریپت ولی از خط حلقه تکرار و به بعدش هیچی نفهمیدم اگه میشه تک تک خط ها و کلمه هاش رو وضیح بدید چون من نفهمیدم حلقه تکرار نقشش این وسط چیه و چرا ما دو تا متغیر به نام temp تو دو تا تابع داریم ولی ارور نمیده سیستم
    بعد راه ساده تری هم هست تا بشه روی string کد گذاری کرد آیا؟
    اگه هم منبع خارجی میشناسید به من معرفی کنید تا من اون رو مطالعه کنم
    خیلی ممنون آقای پولادرگ

    • سلام و عرض ادب

      در مورد متغییر ها وقتی شما در Scope یک تابع یک متغییر دارید فقط درون آن تابع در دسترس هست پس می توانید در تابعی دیگر نیز با همان نام بدون خطا داشته باشید، در واقع Scope یک تابع محدوده ای برای تابع هست که مواردی که در آن هست و تعریف می شود فقط درون آن مورد در دسترس باشد، مگر این که متغییر خارج از تابع تعریف شده باشد.

      متغییر temp هم در واقع وظیفه نگهداری داده ما را دارد تا در مرحله آخر خروجی داده شود

      حلقه ها هم برای پیشمایش بین متن هست تا بتوانیم تمام حروف را تک تک کد گزاری کنیم

      در واقع طبق همان تابعی که قرار داده شده هر موردی که وارد شود با مقدار در همان index از آرایه دوم جا به جا می شود

      این روش یکی از روش های ساده کد گزاری هست ، برای روش های غیرقابل بازگشت مثل MD5 و… هم توابعی ایجاد شده است و یا روش ساده Base64 که برای آن نمونه برای اکشن وجود دارد

      فکر می کنم اگر برای استفاده های عمومی باشد base64 برای شما مفید باشد، که قابل بازگشت هم می باشد.

      عبارت base64 in as3 را جستجو کنید برای این مورد نمونه های پیدا خواهید کرد.

      برای موارد دیگر encodeing and decoding in as3 را جستجو کنید

      موفق و پیروز باشید

      • خیلی ممنون استاد توضیحات کامل بود و برای آگاهی بیشتر حتما بنده به اینترنت مراجعه خواهم کرد
        فقط یک سوال دیگه برای من پیش اومده
        شما زبان برنامه نویسی اکشن اسکریپ رو چطور آموزش دیدین
        آیا رشته ی دانشگاهی برای زبان اکشن اسکریپت و یا پی اچ پی , جاوااسکریپت و زبان دیگر وجود دارد یا نه؟

        • سلام و عرض ادب

          متاسفانه در ایران رشته اختصاصی برای زبانهای برنامه نویسی وجود ندارد، می بایست از منابع وب یا کتاب ها و ویدئوهای آموزشی موجود استفاده کنید. و خوشبختانه منابع زیادی وجود دارد

          موفق و پیروز باشید

  5. با سلام استاد عزیز
    امروز بعد دو ماه کاملا مفهوم این چند خط کد رو فهمیدم
    ولی یه ایرادی پیدا کردم
    ایراد که نیست ولی خو میخوام بدونم چطور میشه جاش کار دیگه ای کرد
    اگه یه رشته باشه که داخل این آرایه ها تعریف نشده باشه undefined رو برمیگردونه
    خوب چطور میشه این مسئله رو حل کرد یعنی دیگه مقداری رو بر نگردونه یا یه مقدار مشخص برای همه اونایی که تعریف نشده برگردونه مثلا یه عدد؟

    • سلام و عرض ادب

      توجه داشته باشید این یک روش خیلی خیلی ساده برای کد گذاری هست، برای کد گزاری حرفه ای تر و قابل بازگشت روشهای متنوعی وجود دارد که معمولترین آن Base64 می باشد که برای اکشن نیز کلاسش موجود هست
      در مورد راحی که بتوان با همین دستور همه حروف را هندل کرد هم راه حل این هست که اول هر حرف چک شود که آیا در آرایه وجود دارد یا خیر، اگر وجود نداشت به طور مثال به دو طرف همان حرف دوعلامت مثل $# یا… اضافه شود و به عنوان کد شده همان استفاده شود
      و در بازگشت نیز اگر معادل در آرایه پیدا نشد همان عبارات را $# را از دوطرفش حذف و به عنوان نتیجه خروجی داده شود. البته همان طور که عرض کردم این یک روش ساده هست و با این کار شاید کمی پیچیده شود ولی در کل عملی هست.
      البته باز هم برای استفاده های مهم در برنامه متد کدگذاری دیگر را پیشنهاد می کنم و اگر خیلی کدشدن مهم باشد کد گذاری توسط ByteArray پیشنهاد می شود

      موفق و پیروز باشید

ارسال جواب

آدرس رایانامه شما منتشر نخواهد شد.فیلد های اجباری علامت گزاری شده اند *

*

رفتن به بالای صفحه