آموزش ایجاد پسوورد در آردوینو
گذرواژه یا اسم رمز یک کلمه یا جمله و یا رشتهای از کاراکتر است که برای اصالتسنجی به کار میرود. افراد یا ابزارها برای استفاده از یک سامانه محافظت شده توسط گذرواژه، باید آن گذرواژه را به واحد اصالتسنجی آن سامانه ارائه دهند و در صورت ارائهٔ گذرواژهٔ درست مجاز به استفاده از آن سامانه میشوند، همچنین گذرواژه برای اثبات هویت نیز به کار میرود به این صورت که کاربر یک سامانه با ارائه نام کاربری خود باید گذرواژه خود را نیز ارائه بدهد در صورت ارائه گذرواژه درست، ادعای وی در مورد تعلق نام کاربری به وی مورد تائید سامانه قرار میگیرد.گذرواژهها در اغلب سامانههای رایانهای و دستگاههای الکترونیکی مورد استفاده قرار میگیرند. به طور معمول فرایند پیکربندی دستگاههای الکترونیکی توسط گذرواژه محافظت میشود.در ادامه آموزش ایجاد پسوورد در آردوینو با مرجع تخصصی آردوینو ، دیجی اسپارک همراه باشید. در این آموزش برای ایجاد پسوورد و همچنین عملیات بر روی آن از کتابخانه password.h استفاده شده است که میتوانید از لینک زیر آن را دانلود کنید.
پس از دانلود کتابخانه و اضافه کردن آن به نرمافزار آردوینو ، توسط دستور زیر آن را به برنامه فراخوانی میکنیم.
#include <Password.h>
بعد از فراخوانی باید یک شی از کتابخانه password.h بسازیم همانند قطعه کد زیر:
Password pass = Password(mypassword);
در کد فوق pass آبجکتی است که از کلاس Password ساخته شده است و mypassword نیز رشتهای است که میخواهیم به عنوان پسوورد استفاده کنیم.برای مثال در قطعه کد زیر یک کلمه عبور با مقدار ۱۲۳۴۵۶ ایجاد میکنیم.
Password pass = Password("123456");
توابع
set(char * pas)
توسط این تابع میتوایم گذرواژه جدیدی به شی ساخته شده از کلاس Password.h نسبت دهیم.ساختار تابع به صورت زیر میباشد:
password.set(* pass);
که pass آرایهای از جنس char میباشد.توجه داشته باشید که این آرایه باید به صورت سراسری در برنامه تعریف شده باشد یعنی در بالای steup برنامه آن را تعریف کرده باشیم.
مثال: در این مثال ابتدا کلمه عبور عبارت ۱۲۳۴ میباشد و پس از استفاده از تابع set مقدار گذرواژه به عبارت digispark تغییر میکند.
#include <Password.h> Password password = Password( "1234" ); char pass[]="digispark"; void setup() { password.set(pass); } void loop() { }
نکته: همانطور که ذکر شد مقدار آرایهای که به عنوان گذرواژه به تابع set نسبت میدهیم باید به صورت سراسری تعریف شده باشد.برای مثال قطعه کد زیر به دیلیل تعریف آرایه درون تابع setup ، نادرست میباشد.
#include <Password.h> Password password = Password( "1234" ); void setup() { char pass[]="digispark"; password.set(pass); } void loop() { }
is(MyPassword)
این تابع اگر مقدار MyPassword با مقدار گذرواژهی انتخاب شده در ابتدای برنامه برابری کند ، مقدار true و در غیر این صورت مقدار false را بر میگرداند.
مثال:
#include <Password.h> Password password = Password( "123456" ); void setup() { Serial.begin(9600); if (password.is("123456")) { Serial.println("correct password"); } else { Serial.println("not correct password"); } } void loop() { }
evaluate()
از این تابع برای اعتبار سنجی گذرواژهای که حدس زدیم استفاده میشود. اگر مقدار حدس زده شده درست باشد ، true را برمیگرداند در غیر این صورت مقدار false را برمیگرداند.
چگونه گذرواژهای را که در ذهن داریم را به برنامه اعمال کینم؟
برای اعمال کردن گذرواژهی حدسی خود به برنامه باید از روشهای زیر استفاده کنید:
۱- روش اول تابع append
append(character)
به وسیلهی این تابع هر کاراکتر از گذرواژهای را که در ذهن داریم به برنامه اعمال میکنیم.
مثال:
#include <Password.h> Password password = Password ("1234"); void setup () { Serial.begin (9600); password.append ('1');//عدد ۱ را به عنوان پسووردی که در ذهن داریم به برنامه اعمال میکنیم password.append ('2');//عدد ۲ را به عنوان پسووردی که در ذهن داریم به برنامه اعمال میکنیم password.append ('3');//عدد ۳ را به عنوان پسووردی که در ذهن داریم به برنامه اعمال میکنیم password.append ('4');//عدد ۴ را به عنوان پسووردی که در ذهن داریم به برنامه اعمال میکنیم // اعتبار سنجی گذروازه حدس زده شده if ( password.evaluate () ) { Serial.println ("correct password"); } else { Serial.println ("not correct password"); } } void loop () { }
۲- روش شیفت دادن ( استفاده از دستورالعمل >> )
در این روش هر بار یک کاراکتر را به گذرواژه شیفت میدهیم.
مثال:
#include <Password.h> Password password = Password ("1234"); void setup () { Serial.begin (9600); password << '1';//عدد ۱ را به عنوان پسووردی که در ذهن داریم به برنامه اعمال میکنیم password << '2';//عدد ۲ را به عنوان پسووردی که در ذهن داریم به برنامه اعمال میکنیم password << '3';//عدد ۳ را به عنوان پسووردی که در ذهن داریم به برنامه اعمال میکنیم password << '4';//عدد ۴ را به عنوان پسووردی که در ذهن داریم به برنامه اعمال میکنیم // اعتبار سنجی گذروازه حدس زده شده if ( password.evaluate () ) { Serial.println ("correct password"); } else { Serial.println ("not correct password"); } } void loop () { }
reset()
این تابع پسووردی که هر بار حدس میزنیم را ریست میکند. در واقع عمل پاک کردن پسوورد حدس زده شده را انجام میدهد.برای مثال در ابتدای برنامه گذرواژه را عبارت ۱۲۳۴ وارد کردهایم و سپس توسط دستور append مقدار حدس زده شده را به برنامه وارد میکنیم که در همین حال متوجه میشویم یک کاراکتر را اشتباه وارد کردهایم ، حال برای پاک کردن گذرواژه که در حال وارد کردن آن بودیم باید از تابع reset استفاده شود.
پروژه
کدهای زیر را در آردوینو خود آپلود کنید. در این پروژه ابتدا باید وارد سریال مانیتور نرمافزار آردوینو میشوید ، سپس از شما خواسته میشود که پسووردی حدس زده شده را وارد کنید . بعد از وارد کردن گذرواژه در صورتی که کاراکتر ‘?’ زده شود ، برنامه عملیات اعتبار سنجی را انجام میدهد و در صورت درست وارد شدن گذرواژه پیغام You guessed the correct password بر روی سریال مانیتور نرمافزار نمایش داده میشود و در صورتی که گذرواژه را نادرست وارد کرده باشید ، پیام You did not guess the correct password بر روی سریال مانیتور نرمافزار نمایش داده میشود.
در صورت وارد کردن کاراکتر ‘!’ گذرواژهای در حال حدس زدن آن هستید ریست میشود.
#include <Password.h> Password password = Password ("1234"); byte currentLength = 0; void setup () { Serial.begin (9600); Serial.println ("Try to guess the password!"); Serial.println ("Reset with ! evaluate with ?"); Serial.print ("Enter password: "); } void loop () { if ( Serial.available () ){ char input = Serial.read (); switch ( input ){ case '!': //به وسیله این کاراکتر ، پسوورد حدس زده شده ریست می شود password.reset (); currentLength = 0; Serial.println ("tPassword is reset!"); break; case '?': //به وسیله این کاراکتر ، پسوورد حدس زده شده را اعتبار سنجی میکنید if ( password.evaluate () ){ Serial.println ("tYou guessed the correct password!"); } else{ Serial.println ("tYou did not guess the correct password!"); } break; default: //اگر ورودی مورد نظر ۲ کاراکتر فوق نباشند برنامه وارد این قسمت می شود password << input; currentLength++; Serial.print ("Enter password: "); for ( byte i = 0; i<currentLength; i++ ){ Serial.print ('*'); } Serial.println (); } } }
بسیار مفید و اموزنده هستش مطالبتون.
یه پیشنهاد : سعی کن زیاد کتابی ننویسی. اینجور خیلی زود خسته میشن از خوندن مطالبت. سعی کن خیلی دوستانه و با استفاده از کلمات عامیانه و البته کلماتی ک خواننده زود بتونه تو ذهنش اونارو دسته بندی کنه مطالبت رو توسایت بزاری??
سلام
ممنون از شما
حتما با تیم در میان میگذارم
با عرض سلام و خسته نباشین
مطالب خیلی جالبی انتخاب میشه ولی خیلی سخت و گنگ مطرح میشه و در قسمت تشریح کد ها خیلی ضعیف عمل کردین که برای افراد مبتدی درکش سخته لطفا سعی کنید به صورت ساده تر به تشریح و توضیح کد ها بپردازین
با تشکر از سایت خوبتون
با سلام
کاربر گرامی از توجه و پیشنهاد شما سپاسگزارم. شما میتوانید بدون هیچ نگرانی در هر جایی از آموزش که با مشکل مواجه شدید یا سوالی ذهنتون را درگیر کرد. از طریق بخش نظرات اقدام بفرمایید. اگر قرار بود که کلیه بخشهای آموزش کامل و جامع در اختیار قرار گیرد، این همه سایت وجود دارد که در ازای آن از شما پول دریافت میکنند. ولی دیجی اسپارک رویکرد دیگری در پیش دارد.
سلام
آیا بعد از آپلود کردن کدهای خاص روی آردوینو شخصی میتونه اون کد رو از برد استخراج کنه ؟ اگه این اتفاق میتونه بیوفته
میشه یه آموزش واسه رمز گذاری کد آپلود شده روی آردوینو uno بزارید ؟
یه کنترلر درست کردم و دارم تحویل مشتری میدم. میترسم کدهام رو از رو برد برداره کپی کنه.