#crypto
رمزگذاری، هش و کدگذاری سه مفهوم کلیدی در امنیت سایبری و حفاظت از دادهها هستند که با وجود شباهتهایی که به نظر میرسند، کاربردها و اهداف متفاوتی دارند. در اینجا به توضیح هر کدام و دادن مثالهایی برای هر مورد میپردازیم:
———
1- رمزگذاری (Encrypting):
رمزگذاری فرایندی است که در آن اطلاعات یا دادههای قابل فهم (plaintext) توسط یک الگوریتم رمزگذاری و کلید رمزگذاری به دادههایی غیرقابل فهم (ciphertext) تبدیل میشوند. هدف از رمزگذاری این است که تنها افرادی که دارای کلید مناسب هستند بتوانند دادهها را رمزگشایی کرده و مجدداً به شکل قابل فهم درآورند.
مثال:
فرض کنید که میخواهید پیام "سلام" را با استفاده از رمزگذاری AES رمزگذاری کنید. با استفاده از کلید خصوصی، پیام "سلام" به سری از کاراکترهای تصادفی مانند "5G7f9X1" تبدیل میشود که بدون داشتن کلید، خوانده نمیشود.
———
2- هش (Hashing):
هش کردن فرآیندی است که یک داده با حجم دلخواه را به یک خروجی ثابت و کوتاهتر تبدیل میکند که به آن هش گفته میشود. هشها نباید قابل برگشت به حالت اصلی باشند و در صورتی که دو داده متفاوت حتی اندکی با هم تفاوت داشته باشند، هشهای کاملاً متفاوتی تولید میکنند.
مثال:
اگر متن "سلام" را با استفاده از الگوریتم SHA-256 هش کنید، خروجی میتواند شکلی مانند "3a7bd3e2360a0d3dfffb33ef4f6a6513a3da9660" داشته باشد. اگر حتی یک کاراکتر در متن تغییر کند، مثلاً "سلام!"، هش کاملاً متفاوت خواهد بود.
———
3- کدگذاری (Encoding):
کدگذاری فرایندی است که دادهها را از یک فرمت به فرمت دیگر تبدیل میکند، معمولاً برای انتقال یا ذخیرهسازی راحتتر. کدگذاری قابل برگشت است و هدف آن مخفی کردن اطلاعات نیست بلکه سازگاری فرمتها است.
مثال:
اگر تصویری را به فرمت Base64 کدگذاری کنید، میتوانید آن را به صورت رشتهای از کاراکترهای ASCII در متن HTML یا ایمیل قرار دهید. این کدگذاری برای سهولت استفاده از دادهها در زمینههای مختلف است و میتوان آن را به سادگی به حالت اصلی بازگرداند.
———
این سه مفهوم هر کدام کاربردهای خاص خود را دارند و برای حفاظت و مدیریت اطلاعات در محیطهای مختلف فناوری اطلاعات به کار میروند.
@AmirhDeveloper
رمزگذاری، هش و کدگذاری سه مفهوم کلیدی در امنیت سایبری و حفاظت از دادهها هستند که با وجود شباهتهایی که به نظر میرسند، کاربردها و اهداف متفاوتی دارند. در اینجا به توضیح هر کدام و دادن مثالهایی برای هر مورد میپردازیم:
———
1- رمزگذاری (Encrypting):
رمزگذاری فرایندی است که در آن اطلاعات یا دادههای قابل فهم (plaintext) توسط یک الگوریتم رمزگذاری و کلید رمزگذاری به دادههایی غیرقابل فهم (ciphertext) تبدیل میشوند. هدف از رمزگذاری این است که تنها افرادی که دارای کلید مناسب هستند بتوانند دادهها را رمزگشایی کرده و مجدداً به شکل قابل فهم درآورند.
مثال:
فرض کنید که میخواهید پیام "سلام" را با استفاده از رمزگذاری AES رمزگذاری کنید. با استفاده از کلید خصوصی، پیام "سلام" به سری از کاراکترهای تصادفی مانند "5G7f9X1" تبدیل میشود که بدون داشتن کلید، خوانده نمیشود.
———
2- هش (Hashing):
هش کردن فرآیندی است که یک داده با حجم دلخواه را به یک خروجی ثابت و کوتاهتر تبدیل میکند که به آن هش گفته میشود. هشها نباید قابل برگشت به حالت اصلی باشند و در صورتی که دو داده متفاوت حتی اندکی با هم تفاوت داشته باشند، هشهای کاملاً متفاوتی تولید میکنند.
مثال:
اگر متن "سلام" را با استفاده از الگوریتم SHA-256 هش کنید، خروجی میتواند شکلی مانند "3a7bd3e2360a0d3dfffb33ef4f6a6513a3da9660" داشته باشد. اگر حتی یک کاراکتر در متن تغییر کند، مثلاً "سلام!"، هش کاملاً متفاوت خواهد بود.
———
3- کدگذاری (Encoding):
کدگذاری فرایندی است که دادهها را از یک فرمت به فرمت دیگر تبدیل میکند، معمولاً برای انتقال یا ذخیرهسازی راحتتر. کدگذاری قابل برگشت است و هدف آن مخفی کردن اطلاعات نیست بلکه سازگاری فرمتها است.
مثال:
اگر تصویری را به فرمت Base64 کدگذاری کنید، میتوانید آن را به صورت رشتهای از کاراکترهای ASCII در متن HTML یا ایمیل قرار دهید. این کدگذاری برای سهولت استفاده از دادهها در زمینههای مختلف است و میتوان آن را به سادگی به حالت اصلی بازگرداند.
———
این سه مفهوم هر کدام کاربردهای خاص خود را دارند و برای حفاظت و مدیریت اطلاعات در محیطهای مختلف فناوری اطلاعات به کار میروند.
@AmirhDeveloper
🔥6❤3
| AmirHossein |
#crypto رمزگذاری، هش و کدگذاری سه مفهوم کلیدی در امنیت سایبری و حفاظت از دادهها هستند که با وجود شباهتهایی که به نظر میرسند، کاربردها و اهداف متفاوتی دارند. در اینجا به توضیح هر کدام و دادن مثالهایی برای هر مورد میپردازیم: ——— 1- رمزگذاری (Encrypting):…
دوستانی که پست بالا رو خوندن مجدد بخونند.
یک ایرادی توش بود که رفع شد ❤️
یک ایرادی توش بود که رفع شد ❤️
❤3
#crypto
رمزنگاری DES / 3DES:
توضیح چند مفهوم پیش نیاز:
1- ساختار فایستل (Feistel Structure):
ساختار فایستل روشی است برای ساختن یک الگوریتم رمزنگاری بلوکی. این ساختار از یک تابع خاص به نام تابع فایستل استفاده میکند که به ترکیب دادههای ورودی با کلیدهای رمزنگاری کمک میکند. در این ساختار، دادهها به دو نیم تقسیم میشوند. در هر مرحله یا دور از رمزنگاری:
1- نیمه سمت راست به تابع فایستل فرستاده میشود که با یک کلید خاص ترکیب میشود.
2- خروجی تابع فایستل با نیمه سمت چپ دادهها از طریق عملیات XOR مخلوط میشود.
3- نیمهها سپس برای دور بعدی جابجا میشوند.
———
S-Box (Substitution Box):
S-Box یک جزء مهم در بسیاری از الگوریتمهای رمزنگاری است و عملکردی شبیه به جعبه جایگزینی دارد. وظیفه S-Box جایگزینی بخشهایی از دادهها با دادههای دیگر بر اساس یک جدول ثابت است. این فرایند به عنوان بخشی از تابع فایستل اتفاق میافتد:
وقتی دادهها از S-Box عبور میکنند، بخشهایی از دادهها به طور کامل تغییر مییابند.
این تغییر باعث میشود که حملات رمزنگاری که بر اساس تحلیل الگوهای متداول انجام میشوند، دشوارتر شود.
———
Initial Permutation (IP):
Initial Permutation (IP) یا جدول جایگزینی اولیه یکی از اولین مراحل فرآیند رمزنگاری است. این مرحله یک تغییر ساده ولی مهم در ترتیب بیتهای بلوک ورودی دادهها ایجاد میکند. ترتیب دقیق این جابجایی بر اساس یک جدول ثابت و از پیش تعریف شده انجام میشود که به همین نام، جدول جایگزینی اولیه نامیده میشود.
———
توضیحات DES/3DES:
DES (Data Encryption Standard):
DES یک الگوریتم رمزنگاری بلوکی است که توسط موسسه ملی استانداردها و فناوری (NIST) در دهه 1970 تصویب شد. این الگوریتم بلوکهایی از دادهها را به اندازه 64 بیت رمزنگاری میکند و از یک کلید 56 بیتی استفاده میکند (با 8 بیت برای تأیید صحت که در عمل استفاده نمیشوند).
DES از یک ساختار فایستل استفاده میکند که شامل 16 دور تکرار شده است. هر دور شامل توابع گسترش، جایگزینی و جمع میباشد. فرمول اصلی برای ترکیب بلوکهای داده با کلیدها در DES به صورت زیر است:
1- ابتدا دادهها از طریق یک جدول جایگزینی اولیه IP عبور داده میشوند.
2- دادهها به دو نیمه تقسیم میشوند و در طی 16 دور، با کلیدهایی که از کلید اصلی تولید شدهاند، ترکیب میشوند.
3- در هر دور، نیمه راست توسط تابع فایستل تحت تأثیر قرار میگیرد که شامل گسترش، جایگزینی با استفاده از جدول S-Box و یک جمع XOR با کلید دور است.
4- نتایج هر دور دوباره مبادله میشوند و سپس دور بعدی آغاز میشود.
5- پس از 16 دور، دو نیمه مبادله شده و از طریق جدول جایگزینی نهایی IP^-1 عبور داده میشوند تا خروجی نهایی تولید شود.
کاربردها:
DES در دهه 1970 و 1980 برای محافظت از اطلاعات حساس دولتی و تجاری استفاده میشد، اما به دلیل طول کلید نسبتاً کوتاه و آسیبپذیریهای امنیتی که در آن زمان کشف شدند، به تدریج کنار گذاشته شد.
------
3DES (Triple DES):
3DES یک تکامل از DES است که با هدف افزایش امنیت رمزنگاری DES توسعه یافت. این الگوریتم با استفاده از سه دوره DES با سه کلید مجزا یا دو کلید مجزا (که یکی از آنها دوبار استفاده میشود)، دادهها را رمزنگاری میکند.
فرآیند رمزنگاری در 3DES شامل اعمال سه بار الگوریتم DES است:
1- رمزنگاری با کلید اول
2- رمزگشایی با کلید دوم (این بخش به عملکرد امنیتی کمک میکند)
3- رمزنگاری مجدد با کلید سوم
3DES در بسیاری از سیستمهای مالی مانند ATMها و پرداختهای نقطه فروش استفاده میشود. با این حال، به دلیل کند بودن نسبت به الگوریتمهای مدرنتر و محدودیتهای امنیتی، استفاده از آن در حال کاهش است و جایگزینهایی مانند AES توصیه میشوند.
------
تفاوتها:
DES تنها از یک کلید 56 بیتی استفاده میکند، در حالی که 3DES میتواند از کلیدهایی با طول مجموع 168 بیت (در حالت سه کلیدی) استفاده کند.
3DES به دلیل استفاده از چندین دور DES، مقاومت بیشتری در برابر حملات دارد.
DES سریعتر است زیرا تنها یک دور رمزنگاری انجام میدهد، در حالی که 3DES به دلیل انجام سه دور رمزنگاری، کندتر است.(صرف نظر از امنیت بیشتر 3DES)
@AmirhDeveloper
.
رمزنگاری DES / 3DES:
توضیح چند مفهوم پیش نیاز:
1- ساختار فایستل (Feistel Structure):
ساختار فایستل روشی است برای ساختن یک الگوریتم رمزنگاری بلوکی. این ساختار از یک تابع خاص به نام تابع فایستل استفاده میکند که به ترکیب دادههای ورودی با کلیدهای رمزنگاری کمک میکند. در این ساختار، دادهها به دو نیم تقسیم میشوند. در هر مرحله یا دور از رمزنگاری:
1- نیمه سمت راست به تابع فایستل فرستاده میشود که با یک کلید خاص ترکیب میشود.
2- خروجی تابع فایستل با نیمه سمت چپ دادهها از طریق عملیات XOR مخلوط میشود.
3- نیمهها سپس برای دور بعدی جابجا میشوند.
———
S-Box (Substitution Box):
S-Box یک جزء مهم در بسیاری از الگوریتمهای رمزنگاری است و عملکردی شبیه به جعبه جایگزینی دارد. وظیفه S-Box جایگزینی بخشهایی از دادهها با دادههای دیگر بر اساس یک جدول ثابت است. این فرایند به عنوان بخشی از تابع فایستل اتفاق میافتد:
وقتی دادهها از S-Box عبور میکنند، بخشهایی از دادهها به طور کامل تغییر مییابند.
این تغییر باعث میشود که حملات رمزنگاری که بر اساس تحلیل الگوهای متداول انجام میشوند، دشوارتر شود.
———
Initial Permutation (IP):
Initial Permutation (IP) یا جدول جایگزینی اولیه یکی از اولین مراحل فرآیند رمزنگاری است. این مرحله یک تغییر ساده ولی مهم در ترتیب بیتهای بلوک ورودی دادهها ایجاد میکند. ترتیب دقیق این جابجایی بر اساس یک جدول ثابت و از پیش تعریف شده انجام میشود که به همین نام، جدول جایگزینی اولیه نامیده میشود.
———
توضیحات DES/3DES:
DES (Data Encryption Standard):
DES یک الگوریتم رمزنگاری بلوکی است که توسط موسسه ملی استانداردها و فناوری (NIST) در دهه 1970 تصویب شد. این الگوریتم بلوکهایی از دادهها را به اندازه 64 بیت رمزنگاری میکند و از یک کلید 56 بیتی استفاده میکند (با 8 بیت برای تأیید صحت که در عمل استفاده نمیشوند).
DES از یک ساختار فایستل استفاده میکند که شامل 16 دور تکرار شده است. هر دور شامل توابع گسترش، جایگزینی و جمع میباشد. فرمول اصلی برای ترکیب بلوکهای داده با کلیدها در DES به صورت زیر است:
1- ابتدا دادهها از طریق یک جدول جایگزینی اولیه IP عبور داده میشوند.
2- دادهها به دو نیمه تقسیم میشوند و در طی 16 دور، با کلیدهایی که از کلید اصلی تولید شدهاند، ترکیب میشوند.
3- در هر دور، نیمه راست توسط تابع فایستل تحت تأثیر قرار میگیرد که شامل گسترش، جایگزینی با استفاده از جدول S-Box و یک جمع XOR با کلید دور است.
4- نتایج هر دور دوباره مبادله میشوند و سپس دور بعدی آغاز میشود.
5- پس از 16 دور، دو نیمه مبادله شده و از طریق جدول جایگزینی نهایی IP^-1 عبور داده میشوند تا خروجی نهایی تولید شود.
کاربردها:
DES در دهه 1970 و 1980 برای محافظت از اطلاعات حساس دولتی و تجاری استفاده میشد، اما به دلیل طول کلید نسبتاً کوتاه و آسیبپذیریهای امنیتی که در آن زمان کشف شدند، به تدریج کنار گذاشته شد.
------
3DES (Triple DES):
3DES یک تکامل از DES است که با هدف افزایش امنیت رمزنگاری DES توسعه یافت. این الگوریتم با استفاده از سه دوره DES با سه کلید مجزا یا دو کلید مجزا (که یکی از آنها دوبار استفاده میشود)، دادهها را رمزنگاری میکند.
فرآیند رمزنگاری در 3DES شامل اعمال سه بار الگوریتم DES است:
1- رمزنگاری با کلید اول
2- رمزگشایی با کلید دوم (این بخش به عملکرد امنیتی کمک میکند)
3- رمزنگاری مجدد با کلید سوم
3DES در بسیاری از سیستمهای مالی مانند ATMها و پرداختهای نقطه فروش استفاده میشود. با این حال، به دلیل کند بودن نسبت به الگوریتمهای مدرنتر و محدودیتهای امنیتی، استفاده از آن در حال کاهش است و جایگزینهایی مانند AES توصیه میشوند.
------
تفاوتها:
DES تنها از یک کلید 56 بیتی استفاده میکند، در حالی که 3DES میتواند از کلیدهایی با طول مجموع 168 بیت (در حالت سه کلیدی) استفاده کند.
3DES به دلیل استفاده از چندین دور DES، مقاومت بیشتری در برابر حملات دارد.
DES سریعتر است زیرا تنها یک دور رمزنگاری انجام میدهد، در حالی که 3DES به دلیل انجام سه دور رمزنگاری، کندتر است.(صرف نظر از امنیت بیشتر 3DES)
@AmirhDeveloper
.
❤1🔥1
#crypto
IDEA (International Data Encryption Algorithm) :
IDEA، یک الگوریتم رمزنگاری بلوکی میباشد که ابتدا در سال 1991 توسط Xuejia Lai و James Massey از مؤسسه فناوری فدرال سوئیس به منظور جایگزینی برای DES (Data Encryption Standard) معرفی شد. IDEA از یک کلید 128 بیتی استفاده میکند و دادهها را در بلوکهای 64 بیتی رمزنگاری میکند.
———
عملکرد الگوریتم:
IDEA بر اساس چندین مرحله مختلف عمل میکند. الگوریتم از 8.5 دور تکراری استفاده میکند، که هر کدام شامل چندین مرحله مختلف میباشد.
الگوریتم IDEA شامل 8 دور کامل است. در هر دور، چهار زیر بلوک داده (هر کدام 16 بیت) از طریق یک سری ترکیبهای مشخص از عملیاتهای جمع، ضرب و XOR با کلیدهای مختلف مرتبط میشوند. هر دور شامل استفاده از چندین کلید کوچکتر است که از کلید اصلی 128 بیتی مشتق میشوند.
پس از اتمام 8 دور کامل، یک نیم دور دیگر انجام میشود، که به آن "نیم دور نهایی" گفته میشود. در این نیم دور، دادهها دوباره تحت تأثیر ترکیبهایی از جمع و ضرب قرار میگیرند، اما به جای تکرار کامل پردازشهای قبلی، تنها برخی از عملیاتها اعمال میشوند تا خروجی نهایی رمزنگاری شده را تولید کنند.
———
مراحل:
1- دادههای ورودی 64 بیتی به چهار بخش 16 بیتی تقسیم میشوند.
2- هر بخش با یکی از کلیدهای جزئی ترکیب میشود (از طریق ضرب، جمع، یا XOR) برای تولید خروجی.
3- کلیدهای جزئی از کلید اصلی 128 بیتی با استفاده از یک الگوریتم تولید کلید جداگانه استخراج میشوند.
4- فرآیند فوق برای هر دور تکرار میشود، با استفاده از کلیدهای جدید در هر دور.
5- پس از اتمام دورها، یک تبدیل نهایی انجام شده و خروجی رمزنگاری شده تولید میگردد.
———
کاربردها:
به کار رفته در برنامههای مختلف مانند PGP (Pretty Good Privacy) برای رمزنگاری ایمیلها و دادهها.
استفاده در برخی از سیستمهای پرداخت برای تأمین امنیت تراکنشها.
استفاده برای رمزنگاری دادههای ارسالی از طریق شبکههای خصوصی مجازی (VPN).
———
IDEA همچنین به دلیل ساختار متقارن خود که به همان اندازه در رمزگشایی مؤثر است، مورد توجه قرار گرفته است. با این حال، با پیشرفتهایی در حوزه رمزنگاری، الگوریتمهای جدیدتر مانند AES (Advanced Encryption Standard) جایگاه بیشتری در کاربردهای صنعتی پیدا کردهاند.
@AmirhDeveloper
.
IDEA (International Data Encryption Algorithm) :
IDEA، یک الگوریتم رمزنگاری بلوکی میباشد که ابتدا در سال 1991 توسط Xuejia Lai و James Massey از مؤسسه فناوری فدرال سوئیس به منظور جایگزینی برای DES (Data Encryption Standard) معرفی شد. IDEA از یک کلید 128 بیتی استفاده میکند و دادهها را در بلوکهای 64 بیتی رمزنگاری میکند.
———
عملکرد الگوریتم:
IDEA بر اساس چندین مرحله مختلف عمل میکند. الگوریتم از 8.5 دور تکراری استفاده میکند، که هر کدام شامل چندین مرحله مختلف میباشد.
الگوریتم IDEA شامل 8 دور کامل است. در هر دور، چهار زیر بلوک داده (هر کدام 16 بیت) از طریق یک سری ترکیبهای مشخص از عملیاتهای جمع، ضرب و XOR با کلیدهای مختلف مرتبط میشوند. هر دور شامل استفاده از چندین کلید کوچکتر است که از کلید اصلی 128 بیتی مشتق میشوند.
پس از اتمام 8 دور کامل، یک نیم دور دیگر انجام میشود، که به آن "نیم دور نهایی" گفته میشود. در این نیم دور، دادهها دوباره تحت تأثیر ترکیبهایی از جمع و ضرب قرار میگیرند، اما به جای تکرار کامل پردازشهای قبلی، تنها برخی از عملیاتها اعمال میشوند تا خروجی نهایی رمزنگاری شده را تولید کنند.
———
مراحل:
1- دادههای ورودی 64 بیتی به چهار بخش 16 بیتی تقسیم میشوند.
2- هر بخش با یکی از کلیدهای جزئی ترکیب میشود (از طریق ضرب، جمع، یا XOR) برای تولید خروجی.
3- کلیدهای جزئی از کلید اصلی 128 بیتی با استفاده از یک الگوریتم تولید کلید جداگانه استخراج میشوند.
4- فرآیند فوق برای هر دور تکرار میشود، با استفاده از کلیدهای جدید در هر دور.
5- پس از اتمام دورها، یک تبدیل نهایی انجام شده و خروجی رمزنگاری شده تولید میگردد.
———
کاربردها:
به کار رفته در برنامههای مختلف مانند PGP (Pretty Good Privacy) برای رمزنگاری ایمیلها و دادهها.
استفاده در برخی از سیستمهای پرداخت برای تأمین امنیت تراکنشها.
استفاده برای رمزنگاری دادههای ارسالی از طریق شبکههای خصوصی مجازی (VPN).
———
IDEA همچنین به دلیل ساختار متقارن خود که به همان اندازه در رمزگشایی مؤثر است، مورد توجه قرار گرفته است. با این حال، با پیشرفتهایی در حوزه رمزنگاری، الگوریتمهای جدیدتر مانند AES (Advanced Encryption Standard) جایگاه بیشتری در کاربردهای صنعتی پیدا کردهاند.
@AmirhDeveloper
.
#crypto
Blowfish:
الگوریتم Blowfish یک الگوریتم رمزنگاری متقارن کلیدی است که توسط بروس اشنایر در سال 1993 طراحی شد. این الگوریتم برای جایگزینی DES و IDEA طراحی شده و معمولاً برای رمزگذاری اطلاعات در محیطهایی که نیاز به رمزنگاری قوی و کارآمد دارند، مورد استفاده قرار میگیرد.
ویژگیهای کلیدی:
طول کلید میتواند بین 32 بیت تا 448 بیت باشد.
از بلوکهای داده 64 بیتی استفاده میکند.
رمزنگاری سریع در پلتفرمهایی با منابع محدود.
مقاومت بالا در برابر حملات رمزنگاری، به جز برخی نقاط ضعف در کلیدهای بسیار طولانی.
فرآیند رمزنگاری:
از یک شبکه فایستل استفاده میکند که شامل 16 دور تکرار میشود. دادهها به دو نیمه تقسیم شده و سپس با استفاده از کلیدهای تولید شده از یک ماتریس S-box و کلید اصلی پردازش میشوند.
1- دادههای ورودی که به صورت بلوکهای 64 بیتی هستند، به دو نیمه تقسیم میشوند، نیمه چپ (L) و نیمه راست (R).
2- در هر دور تابع F به نیمه L اعمال میشود و نتیجه با نیمه R، XOR میشود.
سپس L و R جابهجا میشوند. در دور بعدی، عملیات روی R جدید (که L قبلی است) انجام میشود.
a,b,c,d هر کدام از نیمه چپ (L) برداشته میشوند.
از مقادیر بخشهای a,b,c,d به عنوان اندیسها برای دسترسی به جداول S-box استفاده میشود و مقادیر جدول به صورت زیر ترکیب میشوند:
F(L) = ((S1[a] + S2[b] mod 2^32) XOR S3[c]) + S4[d] mod 2^32
این تابع برای محاسبه نتیجهای استفاده میشود که با R ترکیب خواهد شد.
4- پس از 16 دور، L و R نهایی جابهجا میشوند.
دو نیمه با هم ترکیب شده و خروجی نهایی رمزنگاری شده را تشکیل میدهند.
کاربردها:
1- از آن برای رمزگذاری فایلهای فردی یا کل دیسک استفاده میشود.
2- به عنوان یک انتخاب برای ایجاد ارتباطات محافظتشده در نرمافزارهای مختلف.
3- امنسازی تراکنشها در سیستمهای پرداخت الکترونیکی.
به دلیل سادگی و کارایی بالا در دستگاههایی با قدرت پردازشی کمتر، همچنان محبوب است، اما در برخی کاربردهای جدیدتر توسط الگوریتمهایی مانند AES که امنیت بالاتری دارند جایگزین شده است.
@AmirhDeveloper
.
Blowfish:
الگوریتم Blowfish یک الگوریتم رمزنگاری متقارن کلیدی است که توسط بروس اشنایر در سال 1993 طراحی شد. این الگوریتم برای جایگزینی DES و IDEA طراحی شده و معمولاً برای رمزگذاری اطلاعات در محیطهایی که نیاز به رمزنگاری قوی و کارآمد دارند، مورد استفاده قرار میگیرد.
ویژگیهای کلیدی:
طول کلید میتواند بین 32 بیت تا 448 بیت باشد.
از بلوکهای داده 64 بیتی استفاده میکند.
رمزنگاری سریع در پلتفرمهایی با منابع محدود.
مقاومت بالا در برابر حملات رمزنگاری، به جز برخی نقاط ضعف در کلیدهای بسیار طولانی.
فرآیند رمزنگاری:
از یک شبکه فایستل استفاده میکند که شامل 16 دور تکرار میشود. دادهها به دو نیمه تقسیم شده و سپس با استفاده از کلیدهای تولید شده از یک ماتریس S-box و کلید اصلی پردازش میشوند.
1- دادههای ورودی که به صورت بلوکهای 64 بیتی هستند، به دو نیمه تقسیم میشوند، نیمه چپ (L) و نیمه راست (R).
2- در هر دور تابع F به نیمه L اعمال میشود و نتیجه با نیمه R، XOR میشود.
سپس L و R جابهجا میشوند. در دور بعدی، عملیات روی R جدید (که L قبلی است) انجام میشود.
a,b,c,d هر کدام از نیمه چپ (L) برداشته میشوند.
از مقادیر بخشهای a,b,c,d به عنوان اندیسها برای دسترسی به جداول S-box استفاده میشود و مقادیر جدول به صورت زیر ترکیب میشوند:
F(L) = ((S1[a] + S2[b] mod 2^32) XOR S3[c]) + S4[d] mod 2^32
این تابع برای محاسبه نتیجهای استفاده میشود که با R ترکیب خواهد شد.
4- پس از 16 دور، L و R نهایی جابهجا میشوند.
دو نیمه با هم ترکیب شده و خروجی نهایی رمزنگاری شده را تشکیل میدهند.
کاربردها:
1- از آن برای رمزگذاری فایلهای فردی یا کل دیسک استفاده میشود.
2- به عنوان یک انتخاب برای ایجاد ارتباطات محافظتشده در نرمافزارهای مختلف.
3- امنسازی تراکنشها در سیستمهای پرداخت الکترونیکی.
به دلیل سادگی و کارایی بالا در دستگاههایی با قدرت پردازشی کمتر، همچنان محبوب است، اما در برخی کاربردهای جدیدتر توسط الگوریتمهایی مانند AES که امنیت بالاتری دارند جایگزین شده است.
@AmirhDeveloper
.
🔥1
#crypto
Twofish:
Twofish یک الگوریتم رمزنگاری بلوکی است که در سال 1998 توسط بروس شنایر، جان کلسی، داگ وایتینگ، دیوید واگنر، کریس هال، و نیل فرگوسن طراحی شده است. این الگوریتم به عنوان یکی از نامزدهای مرحله نهایی برای AES (Advanced Encryption Standard) بود ولی در نهایت Rijndael برای این نقش انتخاب شد. Twofish یک رمز سمتریک است، یعنی برای رمزنگاری و رمزگشایی از همان کلید استفاده میکند.
ویژگیها:
1- اندازه بلوک 128 بیت
2- طول کلید 128، 192، یا 256 بیت
3- این الگوریتم از 16 چرخه تکراری استفاده میکند.
4- بر اساس شبکه فایستل، که تقسیم دادهها به دو نیمه را و مبادله آنها در هر چرخه دربرمیگیرد.
مکانیزم الگوریتم:
Twofish از ترکیبی از تبدیلهای مختلف برای افزایش امنیت و کارآمدی استفاده میکند.
Twofish از یک مکانیزم پیچیده برای تولید راندکیها (کلیدهایی که در هر چرخه استفاده میشوند) استفاده میکند. این فرآیند شامل تبدیل کلید ورودی به آرایهای از کلیدهای 32 بیتی است که با استفاده از S-boxها و PHT (Pseudo-Hadamard Transform) اصلاح میشوند.
در هر راند، دادهها از یک سری S-box، تبدیلات خطی و نهایتاً یک جمع با کلید راند میگذرند. این فرآیندها به نوبه خود به افزایش امنیت در برابر حملات مختلف کمک میکنند.
Twofish از S-boxهایی استفاده میکند که به صورت پویا بر اساس کلید رمزنگاری ایجاد میشوند. این روش باعث میشود که تجزیه و تحلیل رمز بدون دانستن کلید اصلی دشوارتر باشد.
فرآیند رمزنگاری:
رمزنگاری در Twofish در 16 راند انجام میپذیرد و هر راند شامل چندین مرحله است:
1- دادههای ورودی 128 بیتی به دو بخش 64 بیتی تقسیم میشوند.
2- در هر راند، یکی از نیمهها به عنوان ورودی به تابع F ارسال میشود که شامل استفاده از S-boxها و PHT است.
خروجی تابع F با نیمه دیگر XOR میشود و سپس نیمهها جابجا میشوند.
F(R) = (S0[R0] XOR S1[R1] XOR S2[R2] XOR S3[R3]) XOR K
R0, R1, R2, R3 هرکدام 8 بیت از ورودی R هستند.
S0, S1, S2, S3 همان S-Box هایی هستند که بر اساس کلید رمزنگاری تعریف شدهاند.
K کلید راند که در این تابع به عنوان یک عنصر اضافه کننده به کار میرود.
3- پس از گذراندن تمام راندها، دو نیمه نهایی با یک کلید دیگر XOR میشوند تا خروجی نهایی رمزنگاری شده تولید شود.
کاربردها:
1- به دلیل سرعت بالا و امنیت قوی در مقایسه با سایر الگوریتمها، Twofish در زمینههایی که امنیت دادههای حساس اهمیت دارد مورد استفاده قرار میگیرد.
2- استفاده از Twofish برای محافظت از اطلاعات حساس مربوط به تراکنشهای مالی و بانکی.
3- بسیاری از نرمافزارهای رمزنگاری که نیاز به رمزنگاری فایلها و دادهها دارند، از Twofish به عنوان یک گزینه برای تامین امنیت اطلاعات استفاده میکنند.
Twofish همچنان به عنوان یک گزینه معتبر و قابل اطمینان در میان الگوریتمهای رمزنگاری مدرن باقی مانده است، به ویژه در کاربردهایی که حفظ تعادل بین امنیت و عملکرد اهمیت دارد.
@AmirhDeveloper
.
Twofish:
Twofish یک الگوریتم رمزنگاری بلوکی است که در سال 1998 توسط بروس شنایر، جان کلسی، داگ وایتینگ، دیوید واگنر، کریس هال، و نیل فرگوسن طراحی شده است. این الگوریتم به عنوان یکی از نامزدهای مرحله نهایی برای AES (Advanced Encryption Standard) بود ولی در نهایت Rijndael برای این نقش انتخاب شد. Twofish یک رمز سمتریک است، یعنی برای رمزنگاری و رمزگشایی از همان کلید استفاده میکند.
ویژگیها:
1- اندازه بلوک 128 بیت
2- طول کلید 128، 192، یا 256 بیت
3- این الگوریتم از 16 چرخه تکراری استفاده میکند.
4- بر اساس شبکه فایستل، که تقسیم دادهها به دو نیمه را و مبادله آنها در هر چرخه دربرمیگیرد.
مکانیزم الگوریتم:
Twofish از ترکیبی از تبدیلهای مختلف برای افزایش امنیت و کارآمدی استفاده میکند.
Twofish از یک مکانیزم پیچیده برای تولید راندکیها (کلیدهایی که در هر چرخه استفاده میشوند) استفاده میکند. این فرآیند شامل تبدیل کلید ورودی به آرایهای از کلیدهای 32 بیتی است که با استفاده از S-boxها و PHT (Pseudo-Hadamard Transform) اصلاح میشوند.
در هر راند، دادهها از یک سری S-box، تبدیلات خطی و نهایتاً یک جمع با کلید راند میگذرند. این فرآیندها به نوبه خود به افزایش امنیت در برابر حملات مختلف کمک میکنند.
Twofish از S-boxهایی استفاده میکند که به صورت پویا بر اساس کلید رمزنگاری ایجاد میشوند. این روش باعث میشود که تجزیه و تحلیل رمز بدون دانستن کلید اصلی دشوارتر باشد.
فرآیند رمزنگاری:
رمزنگاری در Twofish در 16 راند انجام میپذیرد و هر راند شامل چندین مرحله است:
1- دادههای ورودی 128 بیتی به دو بخش 64 بیتی تقسیم میشوند.
2- در هر راند، یکی از نیمهها به عنوان ورودی به تابع F ارسال میشود که شامل استفاده از S-boxها و PHT است.
خروجی تابع F با نیمه دیگر XOR میشود و سپس نیمهها جابجا میشوند.
F(R) = (S0[R0] XOR S1[R1] XOR S2[R2] XOR S3[R3]) XOR K
R0, R1, R2, R3 هرکدام 8 بیت از ورودی R هستند.
S0, S1, S2, S3 همان S-Box هایی هستند که بر اساس کلید رمزنگاری تعریف شدهاند.
K کلید راند که در این تابع به عنوان یک عنصر اضافه کننده به کار میرود.
3- پس از گذراندن تمام راندها، دو نیمه نهایی با یک کلید دیگر XOR میشوند تا خروجی نهایی رمزنگاری شده تولید شود.
کاربردها:
1- به دلیل سرعت بالا و امنیت قوی در مقایسه با سایر الگوریتمها، Twofish در زمینههایی که امنیت دادههای حساس اهمیت دارد مورد استفاده قرار میگیرد.
2- استفاده از Twofish برای محافظت از اطلاعات حساس مربوط به تراکنشهای مالی و بانکی.
3- بسیاری از نرمافزارهای رمزنگاری که نیاز به رمزنگاری فایلها و دادهها دارند، از Twofish به عنوان یک گزینه برای تامین امنیت اطلاعات استفاده میکنند.
Twofish همچنان به عنوان یک گزینه معتبر و قابل اطمینان در میان الگوریتمهای رمزنگاری مدرن باقی مانده است، به ویژه در کاربردهایی که حفظ تعادل بین امنیت و عملکرد اهمیت دارد.
@AmirhDeveloper
.
🔥2
#crypto
ECC:
ECC (Elliptic Curve Cryptography) یک روش رمزنگاری عمومی است که برای ایمنسازی اطلاعات استفاده میشود. این روش بر اساس خواص ریاضی انحناهای بیضوی در میدانهای جبری ایجاد شده است و از آن برای ایجاد کلیدهای رمزنگاری، تبادل اطلاعات امن و امضاء دیجیتال استفاده میشود.
الگوریتم ECC:
1- در این مرحله، یک منحنی بیضوی روی یک میدان مشخص انتخاب میشود. این منحنی به صورت رابطههای ریاضیی تعریف میشود که از یک مجموعه از اعداد صحیح و یک عملیات جمع خاص استفاده میکند.
2- یک نقطه ابتدایی (یا نقطه ژنراتور) روی منحنی بیضوی انتخاب میشود. این نقطه معمولاً به صورت دلخواه انتخاب میشود.
3- از نقطه ابتدایی شروع کرده و آن را تکراراً با خودش جمع میکنیم. به این ترتیب، نقاط دیگری را بدست میآوریم که همگی روی منحنی بیضوی قرار دارند.
4- هر نقطه بر منحنی بیضوی میتواند به عنوان یک کلید خصوصی استفاده شود، در حالی که مضرب آن نقطه به عنوان کلید عمومی مورد استفاده قرار میگیرد.
فرآیند:
فرض کنید میخواهید یک پیام را با استفاده از ECC رمزنگاری کنید. ابتدا یک جفت کلید عمومی و خصوصی تولید میکنید. سپس میتوانید پیام خود را با استفاده از کلید عمومی رمزگذاری کنید و فقط کسی که دارای کلید خصوصی متناظر است میتواند آن را باز کند.
1- تولید کلیدها:
ابتدا یک منحنی بیضوی مناسب انتخاب میشود. این منحنی بیضوی بر روی یک میدان اعداد مختصاتی (مثلاً میدان اعداد حقیقی یا یک میدان مخصوص مودولاری) تعریف میشود.
یک نقطه اولیه (معمولاً G نامیده میشود) بر روی منحنی بیضوی انتخاب میشود.
شخص اول یک عدد تصادفی به عنوان کلید خصوصی خود انتخاب میکند. این عدد معمولاً با نام d نشان داده میشود.
کلید عمومی متناظر با کلید خصوصی توسط شخص اول محاسبه میشود.
برای محاسبهٔ کلید عمومی، شخص اول از کلید خصوصی خود و نقطه اولیه بر روی منحنی استفاده میکند.
این عملیات به صورت ضربی نقطهای انجام میشود: G * d = A
نتیجهٔ این ضرب، یک نقطه جدید بر روی منحنی بیضوی است که به عنوان کلید عمومی نشان داده میشود.
2- رمزنگاری پیام:
شخص اول متنی را میخواهد برای شخص دوم ارسال کند.
هر کاراکتر متن را به یک نقطه بر روی منحنی بیضوی نگاشت میکنیم. این عملیات به عنوان "تبدیل پیام به نقاط بر روی منحنی بیضوی" شناخته میشود.
با استفاده از کلید عمومی، شخص اول محاسبه میکند که هر نقطه بر روی منحنی بیضوی را چه مقداری به دیگر نقاط میرساند. این عملیات به عنوان "ضرب نقطه در کلید عمومی" شناخته میشود.
در نتیجه، متن مبدل به یک سری نقاط دیگر بر روی منحنی بیضوی میشود، که از دیدگاه ریاضی به شکل G * k = R تولید میشود، که R نقطه رمزنگاری شده، G نقطه اصلی (نقطه اولیه) بر روی منحنی بیضوی و k عدد تصادفی است که از کلید عمومی مشتق شده است.
3- رمزگشایی:
شخص دوم پیام رمزنگاری شده را از شخص اول دریافت میکند، که شامل نقاطی بر روی منحنی بیضوی است.
شخص دوم از کلید خصوصی خود (که به عنوان d نشان داده میشود) استفاده میکند تا هر نقطه رمزنگاری شده را به دیگر نقاط منحنی بیضوی منتقل کند. این عملیات به عنوان "ضرب نقطه در کلید خصوصی" شناخته میشود.
به عبارت ریاضی، برای هر نقطه رمزنگاری شده R، شخص دوم R را با کلید خصوصی d ضرب میکند، که به صورت R * d= M تعریف میشود. در اینجا M نقطه اصلی منحنی بیضوی است که متن رمزنگاری شده به آن تبدیل شده است.
نقاط بدست آمده M به ترتیب تبدیل به کاراکترهای متنی میشوند. این عملیات به عنوان "تبدیل نقاط بر روی منحنی بیضوی به متن" شناخته میشود.
در نهایت، شخص دوم متن اصلی را بازیابی میکند که توسط شخص اول رمزنگاری شده بود.
کاربردها:
به عنوان یک روش رمزنگاری برای ارتباطات امن در اینترنت، تلفنهای همراه، و دیگر سیستمهای ارتباطی استفاده میشود.
برای ایجاد امضاءهای دیجیتال برای تأیید هویت در امضاءهای دیجیتال و احراز هویت استفاده میشود.
به عنوان یکی از روشهای رمزنگاری اصلی برای امنیت تراکنشهای پرداخت الکترونیکی مورد استفاده قرار میگیرد.
@AmirhDeveloper
.
ECC:
ECC (Elliptic Curve Cryptography) یک روش رمزنگاری عمومی است که برای ایمنسازی اطلاعات استفاده میشود. این روش بر اساس خواص ریاضی انحناهای بیضوی در میدانهای جبری ایجاد شده است و از آن برای ایجاد کلیدهای رمزنگاری، تبادل اطلاعات امن و امضاء دیجیتال استفاده میشود.
الگوریتم ECC:
1- در این مرحله، یک منحنی بیضوی روی یک میدان مشخص انتخاب میشود. این منحنی به صورت رابطههای ریاضیی تعریف میشود که از یک مجموعه از اعداد صحیح و یک عملیات جمع خاص استفاده میکند.
2- یک نقطه ابتدایی (یا نقطه ژنراتور) روی منحنی بیضوی انتخاب میشود. این نقطه معمولاً به صورت دلخواه انتخاب میشود.
3- از نقطه ابتدایی شروع کرده و آن را تکراراً با خودش جمع میکنیم. به این ترتیب، نقاط دیگری را بدست میآوریم که همگی روی منحنی بیضوی قرار دارند.
4- هر نقطه بر منحنی بیضوی میتواند به عنوان یک کلید خصوصی استفاده شود، در حالی که مضرب آن نقطه به عنوان کلید عمومی مورد استفاده قرار میگیرد.
فرآیند:
فرض کنید میخواهید یک پیام را با استفاده از ECC رمزنگاری کنید. ابتدا یک جفت کلید عمومی و خصوصی تولید میکنید. سپس میتوانید پیام خود را با استفاده از کلید عمومی رمزگذاری کنید و فقط کسی که دارای کلید خصوصی متناظر است میتواند آن را باز کند.
1- تولید کلیدها:
ابتدا یک منحنی بیضوی مناسب انتخاب میشود. این منحنی بیضوی بر روی یک میدان اعداد مختصاتی (مثلاً میدان اعداد حقیقی یا یک میدان مخصوص مودولاری) تعریف میشود.
یک نقطه اولیه (معمولاً G نامیده میشود) بر روی منحنی بیضوی انتخاب میشود.
شخص اول یک عدد تصادفی به عنوان کلید خصوصی خود انتخاب میکند. این عدد معمولاً با نام d نشان داده میشود.
کلید عمومی متناظر با کلید خصوصی توسط شخص اول محاسبه میشود.
برای محاسبهٔ کلید عمومی، شخص اول از کلید خصوصی خود و نقطه اولیه بر روی منحنی استفاده میکند.
این عملیات به صورت ضربی نقطهای انجام میشود: G * d = A
نتیجهٔ این ضرب، یک نقطه جدید بر روی منحنی بیضوی است که به عنوان کلید عمومی نشان داده میشود.
2- رمزنگاری پیام:
شخص اول متنی را میخواهد برای شخص دوم ارسال کند.
هر کاراکتر متن را به یک نقطه بر روی منحنی بیضوی نگاشت میکنیم. این عملیات به عنوان "تبدیل پیام به نقاط بر روی منحنی بیضوی" شناخته میشود.
با استفاده از کلید عمومی، شخص اول محاسبه میکند که هر نقطه بر روی منحنی بیضوی را چه مقداری به دیگر نقاط میرساند. این عملیات به عنوان "ضرب نقطه در کلید عمومی" شناخته میشود.
در نتیجه، متن مبدل به یک سری نقاط دیگر بر روی منحنی بیضوی میشود، که از دیدگاه ریاضی به شکل G * k = R تولید میشود، که R نقطه رمزنگاری شده، G نقطه اصلی (نقطه اولیه) بر روی منحنی بیضوی و k عدد تصادفی است که از کلید عمومی مشتق شده است.
3- رمزگشایی:
شخص دوم پیام رمزنگاری شده را از شخص اول دریافت میکند، که شامل نقاطی بر روی منحنی بیضوی است.
شخص دوم از کلید خصوصی خود (که به عنوان d نشان داده میشود) استفاده میکند تا هر نقطه رمزنگاری شده را به دیگر نقاط منحنی بیضوی منتقل کند. این عملیات به عنوان "ضرب نقطه در کلید خصوصی" شناخته میشود.
به عبارت ریاضی، برای هر نقطه رمزنگاری شده R، شخص دوم R را با کلید خصوصی d ضرب میکند، که به صورت R * d= M تعریف میشود. در اینجا M نقطه اصلی منحنی بیضوی است که متن رمزنگاری شده به آن تبدیل شده است.
نقاط بدست آمده M به ترتیب تبدیل به کاراکترهای متنی میشوند. این عملیات به عنوان "تبدیل نقاط بر روی منحنی بیضوی به متن" شناخته میشود.
در نهایت، شخص دوم متن اصلی را بازیابی میکند که توسط شخص اول رمزنگاری شده بود.
کاربردها:
به عنوان یک روش رمزنگاری برای ارتباطات امن در اینترنت، تلفنهای همراه، و دیگر سیستمهای ارتباطی استفاده میشود.
برای ایجاد امضاءهای دیجیتال برای تأیید هویت در امضاءهای دیجیتال و احراز هویت استفاده میشود.
به عنوان یکی از روشهای رمزنگاری اصلی برای امنیت تراکنشهای پرداخت الکترونیکی مورد استفاده قرار میگیرد.
@AmirhDeveloper
.
🔥2
#crypto
PGP، مخفف "Pretty Good Privacy"، یک برنامه نرمافزاری است که برای رمزنگاری و دیجیتالی سازی ارتباطات و دادهها به منظور حفظ حریم خصوصی و امنیت آنها استفاده میشود. این برنامه توسط فیل زیمرمن در سال 1991 توسعه یافت و به سرعت به یکی از رایجترین روشها برای امن سازی ارتباطات الکترونیکی تبدیل شد. در ادامه به جزئیات بیشتری در مورد PGP میپردازیم:
PGP از ترکیبی از رمزنگاری متقارن و نامتقارن استفاده میکند. در ابتدا، دادهها با استفاده از یک کلید متقارن رمزگذاری میشوند که به سرعت عملیات رمزنگاری را افزایش میدهد. سپس، کلید متقارن با استفاده از کلید عمومی گیرنده رمزگذاری میشود. فقط گیرندهای که دارای کلید خصوصی متناظر است میتواند کلید متقارن را رمزگشایی کند و به دادههای اصلی دسترسی پیدا کند.
PGP همچنین امکان امضای دیجیتالی پیامها را فراهم میآورد. این فرآیند با استفاده از کلید خصوصی فرستنده برای امضا کردن پیام انجام میشود. گیرنده میتواند با استفاده از کلید عمومی فرستنده، امضا را تأیید کند. این امر به تأیید هویت فرستنده و تضمین تمامیت دادهها کمک میکند.
یکی از چالشهای اصلی در استفاده از PGP، مدیریت کلیدها است. کاربران باید کلیدهای عمومی دیگران را به دست آورند و اطمینان حاصل کنند که این کلیدها معتبر هستند. PGP از یک سیستم اعتماد مبتنی بر "حلقه اعتماد" استفاده میکند، جایی که کاربران میتوانند کلیدهای یکدیگر را تأیید و امضا کنند تا به سایر کاربران در شناسایی و اعتماد به کلیدهای عمومی کمک کنند.
PGP اصلی منبع باز است، اما نسخههای تجاری و استانداردهای مبتنی بر PGP نیز وجود دارند. OpenPGP یک استاندارد آزاد است که توسط IETF نگهداری میشود و توسط بسیاری از برنامههای نرمافزاری پیادهسازی شده است. GnuPG یکی از مشهورترین پیادهسازیهای رایگان و باز این استاندارد است.
استفاده از PGP میتواند نیازمند دانش فنی نسبتاً بالایی باشد و مدیریت کلید میتواند پیچیده باشد. همچنین، در برخی از کشورها ممکن است استفاده از رمزنگاری با قوانین محلی در تضاد باشد. این فناوری باید با درک کامل از ملاحظات قانونی و فنی به کار گرفته شود.
PGP ابزار قدرتمندی برای حفظ امنیت و حریم خصوصی در ارتباطات دیجیتالی است، اما استفاده از آن نیازمند دقت و آگاهی از چگونگی کار با کلیدهای رمزنگاری و اصول امنیتی است.
استفادههای PGP شامل ارسال ایمیلهای رمزنگاری شده، امضای دیجیتال، و حفاظت از فایلها و اطلاعات حساس است. این ابزار معمولاً توسط افراد و سازمانهایی که به حفظ حریم خصوصی و امنیت اطلاعات خود علاقه دارند، استفاده میشود.
@AmirhDeveloper
.
PGP، مخفف "Pretty Good Privacy"، یک برنامه نرمافزاری است که برای رمزنگاری و دیجیتالی سازی ارتباطات و دادهها به منظور حفظ حریم خصوصی و امنیت آنها استفاده میشود. این برنامه توسط فیل زیمرمن در سال 1991 توسعه یافت و به سرعت به یکی از رایجترین روشها برای امن سازی ارتباطات الکترونیکی تبدیل شد. در ادامه به جزئیات بیشتری در مورد PGP میپردازیم:
PGP از ترکیبی از رمزنگاری متقارن و نامتقارن استفاده میکند. در ابتدا، دادهها با استفاده از یک کلید متقارن رمزگذاری میشوند که به سرعت عملیات رمزنگاری را افزایش میدهد. سپس، کلید متقارن با استفاده از کلید عمومی گیرنده رمزگذاری میشود. فقط گیرندهای که دارای کلید خصوصی متناظر است میتواند کلید متقارن را رمزگشایی کند و به دادههای اصلی دسترسی پیدا کند.
PGP همچنین امکان امضای دیجیتالی پیامها را فراهم میآورد. این فرآیند با استفاده از کلید خصوصی فرستنده برای امضا کردن پیام انجام میشود. گیرنده میتواند با استفاده از کلید عمومی فرستنده، امضا را تأیید کند. این امر به تأیید هویت فرستنده و تضمین تمامیت دادهها کمک میکند.
یکی از چالشهای اصلی در استفاده از PGP، مدیریت کلیدها است. کاربران باید کلیدهای عمومی دیگران را به دست آورند و اطمینان حاصل کنند که این کلیدها معتبر هستند. PGP از یک سیستم اعتماد مبتنی بر "حلقه اعتماد" استفاده میکند، جایی که کاربران میتوانند کلیدهای یکدیگر را تأیید و امضا کنند تا به سایر کاربران در شناسایی و اعتماد به کلیدهای عمومی کمک کنند.
PGP اصلی منبع باز است، اما نسخههای تجاری و استانداردهای مبتنی بر PGP نیز وجود دارند. OpenPGP یک استاندارد آزاد است که توسط IETF نگهداری میشود و توسط بسیاری از برنامههای نرمافزاری پیادهسازی شده است. GnuPG یکی از مشهورترین پیادهسازیهای رایگان و باز این استاندارد است.
استفاده از PGP میتواند نیازمند دانش فنی نسبتاً بالایی باشد و مدیریت کلید میتواند پیچیده باشد. همچنین، در برخی از کشورها ممکن است استفاده از رمزنگاری با قوانین محلی در تضاد باشد. این فناوری باید با درک کامل از ملاحظات قانونی و فنی به کار گرفته شود.
PGP ابزار قدرتمندی برای حفظ امنیت و حریم خصوصی در ارتباطات دیجیتالی است، اما استفاده از آن نیازمند دقت و آگاهی از چگونگی کار با کلیدهای رمزنگاری و اصول امنیتی است.
استفادههای PGP شامل ارسال ایمیلهای رمزنگاری شده، امضای دیجیتال، و حفاظت از فایلها و اطلاعات حساس است. این ابزار معمولاً توسط افراد و سازمانهایی که به حفظ حریم خصوصی و امنیت اطلاعات خود علاقه دارند، استفاده میشود.
@AmirhDeveloper
.
🔥1
#crypto
RC Algorithms مخفف Rivest Cipher Algorithms است که یک سری الگوریتمهای رمزنگاری ساخته شده توسط رون ریوست (Ron Rivest) میباشند. این الگوریتمها معمولاً برای ایجاد امنیت در ارتباطات دیجیتال و ذخیره دادهها استفاده میشوند. برخی از معروفترین الگوریتمهای این مجموعه عبارتند از RC4، RC5 و RC6.
RC1:
RC1 اولین تلاش رون ریوست برای ایجاد یک الگوریتم رمزنگاری بود، اما جزئیات آن هرگز به طور عمومی منتشر نشد.
RC2:
RC2 یک الگوریتم رمزنگاری بلوکی با طول بلوک 64 بیت است که در سال 1987 طراحی شد. این الگوریتم از کلیدهای متغیری استفاده میکند که میتواند از 40 بیت تا 128 بیت باشند. RC2 برای جایگزینی DES طراحی شد و در مواردی که طول کلید محدودیت دارد مورد استفاده قرار میگیرد.
RC3:
RC3 در یک مسابقه رمزنگاری شرکت داده شد اما شکست خورد و به سرعت توسط RC5 جایگزین شد.
RC4:
RC4، که در سال 1987 توسعه یافت، یک الگوریتم رمزنگاری استریم است و به خاطر سادگی و سرعت بالای آن در اجرا مشهور است. این الگوریتم توسط یک آرایه موقت S استفاده میکند و یک جریان رمزی تولید میکند که به صورت بایت به بایت با دادههای ورودی XOR میشود.
RC5:
RC5 یک الگوریتم رمزنگاری بلوکی با طول بلوک، طول کلید و تعداد دورهای قابل تنظیم است. این الگوریتم از جمع مدولار، XOR و بیتشیفتهای متغیر استفاده میکند.
RC6:
RC6، که یک تکامل از RC5 است، در مسابقه AES شرکت کرد. این الگوریتم از چهار واحد داده در یک بلوک استفاده میکند و عملیات پیچیدهتری مانند جمع مدولار و بیتشیفتها را انجام میدهد.
الگوریتمهای RC به دلیل سادگی و انعطافپذیری در طراحی و پیادهسازی، در طیف وسیعی از برنامههای کاربردی مورد استفاده قرار گرفتند. با این حال، با پیشرفت در حوزه تحلیل رمزنگاری، برخی از الگوریتمهای قدیمیتر مانند RC4 به دلیل نقاط ضعف امنیتی کمتر استفاده میشوند.
توضیح فرآیند (بر پایه RC4):
RC4 با یک کلید مخفی شروع میشود و یک آرایه از بایتها (معمولاً 256 بایت) را برای تولید جریان رمز استفاده میکند. در اینجا چگونگی کارکرد آن با یک مثال ساده توضیح داده شده است:
1- ابتدا یک آرایه S از اعداد 0 تا 255 ایجاد میشود.
2- آرایه S با استفاده از کلید رمزنگاری شده پراکنده میشود. این به اطمینان از اینکه جریان خروجی نامشخص باقی بماند، کمک میکند.
3- با ترکیب اعداد در آرایه S، یک جریان رمز تولید میشود که برای رمزگذاری دادهها استفاده میشود.
در این فرآیند، ما با ایجاد یک آرایه S که حاوی تمام اعداد از 0 تا 255 است شروع میکنیم. سپس، این آرایه را با استفاده از یک کلید مخفی به صورت پیچیدهای مخلوط میکنیم تا اطمینان حاصل شود که الگوی تولید شده ناشناخته و تصادفی است. در نهایت، با استفاده از این آرایه برای تولید جریانی از اعداد که به طور XOR با متن ساده اعمال میشود، رمزنگاری را انجام میدهیم. این روش باعث میشود که دادههای رمزنگاری شده بدون دانستن کلید قابل خواندن نباشند.
کاربردها:
1- استفاده در پروتکلهایی مانند SSL و TLS برای ایجاد ارتباطات امن در اینترنت.
2- محافظت از دادههای حساس در برابر دسترسیهای نامجاز.
3- به دلیل سادگی و کارایی بالا، در دستگاههایی با منابع محدود مفید است.
الگوریتمهای RC به دلیل سادگی و سرعت بالا در اجرا، همچنان در بسیاری از زمینهها مورد استفاده قرار میگیرند، اگرچه برخی نقاط ضعف امنیتی در آنها شناسایی شده و برخی از استفادههای آنها در محیطهای خاص توصیه نمیشود.
@AmirhDevelpoer
.
RC Algorithms مخفف Rivest Cipher Algorithms است که یک سری الگوریتمهای رمزنگاری ساخته شده توسط رون ریوست (Ron Rivest) میباشند. این الگوریتمها معمولاً برای ایجاد امنیت در ارتباطات دیجیتال و ذخیره دادهها استفاده میشوند. برخی از معروفترین الگوریتمهای این مجموعه عبارتند از RC4، RC5 و RC6.
RC1:
RC1 اولین تلاش رون ریوست برای ایجاد یک الگوریتم رمزنگاری بود، اما جزئیات آن هرگز به طور عمومی منتشر نشد.
RC2:
RC2 یک الگوریتم رمزنگاری بلوکی با طول بلوک 64 بیت است که در سال 1987 طراحی شد. این الگوریتم از کلیدهای متغیری استفاده میکند که میتواند از 40 بیت تا 128 بیت باشند. RC2 برای جایگزینی DES طراحی شد و در مواردی که طول کلید محدودیت دارد مورد استفاده قرار میگیرد.
RC3:
RC3 در یک مسابقه رمزنگاری شرکت داده شد اما شکست خورد و به سرعت توسط RC5 جایگزین شد.
RC4:
RC4، که در سال 1987 توسعه یافت، یک الگوریتم رمزنگاری استریم است و به خاطر سادگی و سرعت بالای آن در اجرا مشهور است. این الگوریتم توسط یک آرایه موقت S استفاده میکند و یک جریان رمزی تولید میکند که به صورت بایت به بایت با دادههای ورودی XOR میشود.
RC5:
RC5 یک الگوریتم رمزنگاری بلوکی با طول بلوک، طول کلید و تعداد دورهای قابل تنظیم است. این الگوریتم از جمع مدولار، XOR و بیتشیفتهای متغیر استفاده میکند.
RC6:
RC6، که یک تکامل از RC5 است، در مسابقه AES شرکت کرد. این الگوریتم از چهار واحد داده در یک بلوک استفاده میکند و عملیات پیچیدهتری مانند جمع مدولار و بیتشیفتها را انجام میدهد.
الگوریتمهای RC به دلیل سادگی و انعطافپذیری در طراحی و پیادهسازی، در طیف وسیعی از برنامههای کاربردی مورد استفاده قرار گرفتند. با این حال، با پیشرفت در حوزه تحلیل رمزنگاری، برخی از الگوریتمهای قدیمیتر مانند RC4 به دلیل نقاط ضعف امنیتی کمتر استفاده میشوند.
توضیح فرآیند (بر پایه RC4):
RC4 با یک کلید مخفی شروع میشود و یک آرایه از بایتها (معمولاً 256 بایت) را برای تولید جریان رمز استفاده میکند. در اینجا چگونگی کارکرد آن با یک مثال ساده توضیح داده شده است:
1- ابتدا یک آرایه S از اعداد 0 تا 255 ایجاد میشود.
For i from 0 to 255:
S[i] = i
2- آرایه S با استفاده از کلید رمزنگاری شده پراکنده میشود. این به اطمینان از اینکه جریان خروجی نامشخص باقی بماند، کمک میکند.
j = 0
For i from 0 to 255:
j = (j + S[i] + Key[i % KeyLength]) % 256
Swap S[i] and S[j]
3- با ترکیب اعداد در آرایه S، یک جریان رمز تولید میشود که برای رمزگذاری دادهها استفاده میشود.
i = j = 0
For each byte k of plaintext:
i = (i + 1) % 256
j = (j + S[i]) % 256
Swap S[i] and S[j]
t = (S[i] + S[j]) % 256
Ciphertext byte = k XOR S[t]
در این فرآیند، ما با ایجاد یک آرایه S که حاوی تمام اعداد از 0 تا 255 است شروع میکنیم. سپس، این آرایه را با استفاده از یک کلید مخفی به صورت پیچیدهای مخلوط میکنیم تا اطمینان حاصل شود که الگوی تولید شده ناشناخته و تصادفی است. در نهایت، با استفاده از این آرایه برای تولید جریانی از اعداد که به طور XOR با متن ساده اعمال میشود، رمزنگاری را انجام میدهیم. این روش باعث میشود که دادههای رمزنگاری شده بدون دانستن کلید قابل خواندن نباشند.
کاربردها:
1- استفاده در پروتکلهایی مانند SSL و TLS برای ایجاد ارتباطات امن در اینترنت.
2- محافظت از دادههای حساس در برابر دسترسیهای نامجاز.
3- به دلیل سادگی و کارایی بالا، در دستگاههایی با منابع محدود مفید است.
الگوریتمهای RC به دلیل سادگی و سرعت بالا در اجرا، همچنان در بسیاری از زمینهها مورد استفاده قرار میگیرند، اگرچه برخی نقاط ضعف امنیتی در آنها شناسایی شده و برخی از استفادههای آنها در محیطهای خاص توصیه نمیشود.
@AmirhDevelpoer
.
🔥1
درود
متسافانه قرار بر این شد که دیگه اینجا فعالیتی نداشته باشم
در آینده اگر خواستم پستی بنویسم روی لینکدین قرار میدم
این بحث هم نصف میمونه و اگر قرار شد ادامه ش بدم روی همون لینکدین پست میکنم
کانال هم همینطوری میمونه تا اگر کسی نیاز داشت مطالب قدیمیش رو بخونه
درنهایت مرسی از کسایی که تو این مدت کنارم بودن و حمایت کردن🤗
.
متسافانه قرار بر این شد که دیگه اینجا فعالیتی نداشته باشم
در آینده اگر خواستم پستی بنویسم روی لینکدین قرار میدم
این بحث هم نصف میمونه و اگر قرار شد ادامه ش بدم روی همون لینکدین پست میکنم
کانال هم همینطوری میمونه تا اگر کسی نیاز داشت مطالب قدیمیش رو بخونه
درنهایت مرسی از کسایی که تو این مدت کنارم بودن و حمایت کردن
.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤13💔5🗿2👍1
Are available in the fragment.com
🌀 @CSharpGap 20 📱
🌀 @JavaScriptGap 20 📱
🌀 @MachineLearningGap 20 📱
🌀 @WordpressGap 20 📱
Please open Telegram to view this post
VIEW IN TELEGRAM
حدود یک سال از شروع توسعه LaraGram میگذره و امروز ورژن 2 اون منتشر شد.
توی این ورژن LaraGram کاملا از نو بازسازی شده با الهام گیری از فریمورک Laravel
در ابتدا Container اضافه شده که مسئول مدیریت تمام وابستگی های پروژه هست.
از طرفی ServiceProvider ها رابط بین ما و کانتینر هستن برای فراهم کردن وابستگی جدید.
در کنارش Facade های لاراول اضافه شده که متد هارو به سادگی در دسترس قرار میده.
برای ارسال درخواست و دریافت آپدیت از پکیج Laraquest استفاده شده که قابلیت سینتکس هایلایتینگ خیلی حرفه ای داره تا استفاده رو ساده کنه و از طرفی بسیار بهینه و سبک هست.
چند لیسنر جدید اضافه شده مثل onReferral
سیستم کیبورد بیلدر بازسازی شده و بسیار انعطاف پذیر تر از قبل.
در کنار مدل ها و مایگریشن ها سیدر و فکتوری هم اضافه شده.
کامند های کنسول انعطاف پذیر تر شدند، طوری که شما هم میتونید با زدن یک کامند، کامند های جدید بسازید.
فایل .env حذف شده و کانفیگ ها داخل آرایه ها گرفته میشن تا سرعت بالاتری رو داشته باشیم.
پوشه بزرگ Core از فولدر root حذف شده و به یک پکیج جداگانه انتقال داده شده.
دیتابیس جیسونی موقتا حذف شده تا پس از بازنویسی اضافه بشه.
همه تغییرات این ها نیستن و خیلی از قابلیت ها مونده که طی آپدیت ها اضافه میشن مثل کانورسیشن ها.
در نهایت اگر مایل بودید به پروژه استار بدید🤗
LaraGram - Laraquest - Core
Channel
@AmirhDeveloper
.
توی این ورژن LaraGram کاملا از نو بازسازی شده با الهام گیری از فریمورک Laravel
در ابتدا Container اضافه شده که مسئول مدیریت تمام وابستگی های پروژه هست.
از طرفی ServiceProvider ها رابط بین ما و کانتینر هستن برای فراهم کردن وابستگی جدید.
در کنارش Facade های لاراول اضافه شده که متد هارو به سادگی در دسترس قرار میده.
برای ارسال درخواست و دریافت آپدیت از پکیج Laraquest استفاده شده که قابلیت سینتکس هایلایتینگ خیلی حرفه ای داره تا استفاده رو ساده کنه و از طرفی بسیار بهینه و سبک هست.
چند لیسنر جدید اضافه شده مثل onReferral
سیستم کیبورد بیلدر بازسازی شده و بسیار انعطاف پذیر تر از قبل.
در کنار مدل ها و مایگریشن ها سیدر و فکتوری هم اضافه شده.
کامند های کنسول انعطاف پذیر تر شدند، طوری که شما هم میتونید با زدن یک کامند، کامند های جدید بسازید.
فایل .env حذف شده و کانفیگ ها داخل آرایه ها گرفته میشن تا سرعت بالاتری رو داشته باشیم.
پوشه بزرگ Core از فولدر root حذف شده و به یک پکیج جداگانه انتقال داده شده.
دیتابیس جیسونی موقتا حذف شده تا پس از بازنویسی اضافه بشه.
همه تغییرات این ها نیستن و خیلی از قابلیت ها مونده که طی آپدیت ها اضافه میشن مثل کانورسیشن ها.
در نهایت اگر مایل بودید به پروژه استار بدید
LaraGram - Laraquest - Core
Channel
@AmirhDeveloper
.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6🔥3👍2
Forwarded from Start Unity (ali reza)
دوستان عزیز 🌟
من مدت زیادی هست که با عشق و علاقه در کانال Start Unity فعالیت میکنم و آموزشهای متنی و کدهای یونیتی رو با شما به اشتراک میگذارم. از حمایتهای شما بسیار ممنونم.
اما برای اینکه کانال بتونه رشد بیشتری داشته باشه و بتونم مطالب بیشتری براتون آماده کنم، به حمایتهای شما نیاز دارم. خواهشمندم که پستهای کانال رو با دوستان و همکارانتون به اشتراک بذارید تا اعضای کانال افزایش پیدا کنه.
همچنین میخواهم از دوست عزیزم که کانال رو بوست کرد، تشکر ویژه کنم. حمایت تو برای من بسیار ارزشمنده ❤️
به عنوان تشکر از حمایتهای شما، در آینده قصد دارم آموزشهای ویدیویی یونیتی هم بسازم و در کانال قرار بدم.
از همراهی و حمایتهای شما بسیار سپاسگزارم. با هم میتونیم این کانال رو به یکی از بهترین منابع آموزشی یونیتی تبدیل کنیم 🚀
من مدت زیادی هست که با عشق و علاقه در کانال Start Unity فعالیت میکنم و آموزشهای متنی و کدهای یونیتی رو با شما به اشتراک میگذارم. از حمایتهای شما بسیار ممنونم.
اما برای اینکه کانال بتونه رشد بیشتری داشته باشه و بتونم مطالب بیشتری براتون آماده کنم، به حمایتهای شما نیاز دارم. خواهشمندم که پستهای کانال رو با دوستان و همکارانتون به اشتراک بذارید تا اعضای کانال افزایش پیدا کنه.
همچنین میخواهم از دوست عزیزم که کانال رو بوست کرد، تشکر ویژه کنم. حمایت تو برای من بسیار ارزشمنده ❤️
به عنوان تشکر از حمایتهای شما، در آینده قصد دارم آموزشهای ویدیویی یونیتی هم بسازم و در کانال قرار بدم.
از همراهی و حمایتهای شما بسیار سپاسگزارم. با هم میتونیم این کانال رو به یکی از بهترین منابع آموزشی یونیتی تبدیل کنیم 🚀
❤10
درود به همه
قصد نوشتن یک دوره آموزشی جامع و کامل برای فریمورک قدرتمند لاراول رو دارم. این دوره به صورت گام به گام و از مباحث پایه شروع شده و به تدریج به مباحث پیشرفتهتر میپردازه، و هر چیزی از لاراول رو قراره پوشش بده.
مناسب برای همه، حتی کسانی که هیچ آشنایی قبلی با لاراول ندارند. تنها پیشنیاز این دوره، آشنایی با زبان PHP و معماری MVC است.
سرفصلهای این دوره:
فصل 0: مقدمات
1- معرفی لاراول
2- نصب و راهاندازی لاراول
3- ساختار پوشهها و فایلها در لاراول
4- تنظیمات اولیه و محیطهای کاری
فصل 1: Routing
1- معرفی متد های روتینگ
2- میدلورها
فصل 2: Controllers
1- ایجاد و استفاده از کنترلرها
2- متدهای کنترلر
3- کنترلرهای Resource
4- کنترلرهای API
5- Dependency Injection در کنترلرها
فصل 3: Views
1- موتور قالبسازی Blade
2- ساختار و سینتکس Blade
3- شامل کردن ویوها و کامپوننتها
4- مدیریت دادهها در ویوها
فصل 4: مدلها و Eloquent ORM
1- معرفی Eloquent
2- تعریف مدلها
3- ارتباطات بین مدلها (Relations)
4- کوئری بیلدر (Query Builder)
5- Accessors و Mutators
6- Scopes
فصل 5: Migrations and Database
1- تعریف و اجرای Migrationها
2- Seeders و Factories
3- کار با دیتابیسها و ارتباطات
فصل 6: فرمها و اعتبارسنجی
1- ساخت و پردازش فرمها
2- اعتبارسنجی درخواستها
3- پیامهای خطا و مدیریت آنها
فصل 7: Services و Dependency Injection
1- Service Container
2- سرویسها و Providers
3- Facades
فصل 8: امنیت (Security)
1- احراز هویت (Authentication)
2- مجوزها (Authorization)
3- رمزنگاری (Encryption)
4- جلوگیری از CSRF و XSS
فصل 9: تست و Debugging
1- معرفی ابزارهای تست لاراول
2- Unit Testing
3- Integration Testing
4- Debugging و خطایابی
فصل 10: Optimization and Performance
1- کشینگ (Caching)
2- Queues و Background Jobs
3- بهینهسازی کوئریها
4- استفاده از Octane
فصل 11: توسعه پیشرفته
1- Package Development
2- توسعه RESTful API
3- استفاده از رویدادها (Events) و Listenerها
4- مدیریت فایلها و Storage
فصل 12: بررسی هسته لاراول
1- ساختار هسته لاراول
2- بررسی و توضیح کلاسهای کلیدی
3- بررسی چرخه درخواست (Request Lifecycle)
لطفا هرگونه کمبود یا ایراد در سرفصل هارو اعلام کنید تا شروع کنیم.
#laravel
@AmirhDeveloper
.
قصد نوشتن یک دوره آموزشی جامع و کامل برای فریمورک قدرتمند لاراول رو دارم. این دوره به صورت گام به گام و از مباحث پایه شروع شده و به تدریج به مباحث پیشرفتهتر میپردازه، و هر چیزی از لاراول رو قراره پوشش بده.
مناسب برای همه، حتی کسانی که هیچ آشنایی قبلی با لاراول ندارند. تنها پیشنیاز این دوره، آشنایی با زبان PHP و معماری MVC است.
سرفصلهای این دوره:
فصل 0: مقدمات
1- معرفی لاراول
2- نصب و راهاندازی لاراول
3- ساختار پوشهها و فایلها در لاراول
4- تنظیمات اولیه و محیطهای کاری
فصل 1: Routing
1- معرفی متد های روتینگ
2- میدلورها
فصل 2: Controllers
1- ایجاد و استفاده از کنترلرها
2- متدهای کنترلر
3- کنترلرهای Resource
4- کنترلرهای API
5- Dependency Injection در کنترلرها
فصل 3: Views
1- موتور قالبسازی Blade
2- ساختار و سینتکس Blade
3- شامل کردن ویوها و کامپوننتها
4- مدیریت دادهها در ویوها
فصل 4: مدلها و Eloquent ORM
1- معرفی Eloquent
2- تعریف مدلها
3- ارتباطات بین مدلها (Relations)
4- کوئری بیلدر (Query Builder)
5- Accessors و Mutators
6- Scopes
فصل 5: Migrations and Database
1- تعریف و اجرای Migrationها
2- Seeders و Factories
3- کار با دیتابیسها و ارتباطات
فصل 6: فرمها و اعتبارسنجی
1- ساخت و پردازش فرمها
2- اعتبارسنجی درخواستها
3- پیامهای خطا و مدیریت آنها
فصل 7: Services و Dependency Injection
1- Service Container
2- سرویسها و Providers
3- Facades
فصل 8: امنیت (Security)
1- احراز هویت (Authentication)
2- مجوزها (Authorization)
3- رمزنگاری (Encryption)
4- جلوگیری از CSRF و XSS
فصل 9: تست و Debugging
1- معرفی ابزارهای تست لاراول
2- Unit Testing
3- Integration Testing
4- Debugging و خطایابی
فصل 10: Optimization and Performance
1- کشینگ (Caching)
2- Queues و Background Jobs
3- بهینهسازی کوئریها
4- استفاده از Octane
فصل 11: توسعه پیشرفته
1- Package Development
2- توسعه RESTful API
3- استفاده از رویدادها (Events) و Listenerها
4- مدیریت فایلها و Storage
فصل 12: بررسی هسته لاراول
1- ساختار هسته لاراول
2- بررسی و توضیح کلاسهای کلیدی
3- بررسی چرخه درخواست (Request Lifecycle)
لطفا هرگونه کمبود یا ایراد در سرفصل هارو اعلام کنید تا شروع کنیم.
#laravel
@AmirhDeveloper
.
🔥17 4👍1
لاراول یک فریمورک PHP متنباز و قدرتمند است که برای توسعه برنامههای وب طراحی شده است.
لاراول از ساختار MVC پیروی میکند که به توسعهدهندگان امکان میدهد کدهای خود را به صورت منظم و خوانا سازماندهی کنند.
این فریمورک همچنین با اصول SOLID و برنامهنویسی شیگرا (OOP) هماهنگ است، که به افزایش قابلیت نگهداری و توسعهپذیری کد کمک میکند.
این فریمورک ابزارها و قابلیتهای بسیاری را برای تسهیل فرآیند توسعه ارائه میدهد، از جمله:
Routing : سیستم مسیریابی قدرتمند برای مدیریت درخواستهای وب.
Eloquent ORM : سیستم ORM پیشرفته برای تعامل با پایگاه داده به صورت شیءگرا.
Artisan Console : رابط خط فرمان برای اجرای دستورات و وظایف مختلف.
Middleware : مکانیزمی برای فیلتر کردن درخواستها و پاسخها.
Queues : پشتیبانی از صفها برای مدیریت کارهای پسزمینه.
لاراول به دلیل سهولت استفاده، مستندات جامع، و جامعه کاربری بزرگ، به یکی از محبوبترین فریمورکهای PHP تبدیل شده است.
برای نصب و راهاندازی لاراول، ابتدا باید اطمینان حاصل کنید که سرور شما از نیازمندیهای لاراول پشتیبانی میکند. نیازمندیهای اصلی لاراول عبارتند از:
- PHP >= 8.2
-
BCMath, Ctype, Fileinfo, JSON, Mbstring, OpenSSL, PDO, Tokenizer, XML PHP Extensionsبرای نصب لاراول، میتوانید از Composer استفاده کنید. Composer یک ابزار مدیریت وابستگیها در PHP است. برای نصب Composer به سایت getcomposer.org مراجعه کرده و دستورالعملهای نصب را دنبال کنید.
پس از نصب Composer، میتوانید لاراول را با استفاده از دو روش زیر نصب کنید:
composer create-project laravel/laravel myproject
یا
composer global require laravel/installer
laravel new myproject
با اجرای این دستور، یک پروژه جدید لاراول در پوشهای به نام
myproject ایجاد میشود.پس از اتمام نصب، میتوانید وارد پوشه پروژه شده و سرور توسعه لاراول را با دستور زیر اجرا کنید:
cd myproject
php artisan serve
سرور توسعه لاراول به صورت پیشفرض روی پورت 8000 اجرا میشود و میتوانید با مراجعه به آدرس
http://localhost:8000 برنامه خود را مشاهده کنید.#laravel
@AmirhDeveloper
.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7 5👍4
پروژه لاراول دارای ساختار پوشهای منظم و مشخصی است. در ادامه، به توضیح مختصر هر یک از پوشهها و فایلهای مهم میپردازیم:
شامل کدهای اصلی برنامه است. این پوشه شامل زیرپوشههای مدلها (Models)، کنترلرها (Controllers)، میانافزارها (Middleware) و غیره میباشد.
شامل فایلهای بوتاسترپینگ برنامه (مانند بوت کردن ServiceProviderها و MiddleWareها) و تنظیمات اولیه است.
شامل فایلهای تنظیمات برنامه است.
شامل فایلهای مرتبط با پایگاه داده مانند مایگریشن ها (Migrations)، Factory ها و Seeder ها می باشد.
شامل فایلهای عمومی قابل دسترسی از طریق وب است. فایلهای CSS، JavaScript، تصاویر و فایل اصلی index.php در این پوشه قرار دارند.
شامل منابع برنامه مانند ویوها (views)، فایلهای زبان و فایلهای استاتیک است.
شامل فایلهای مربوط به مسیریابی برنامه است.
شامل فایلهای ذخیرهسازی مانند لاگها، کشها و فایلهای آپلود شده است.
شامل تستهای واحد و یکپارچهسازی برنامه است.
شامل کتابخانهها و پکیجهای نصب شده توسط Composer است.
لاراول امکان تنظیمات مختلف برای محیطهای کاری مختلف (مثل توسعه، تست، و تولید) را فراهم میکند. فایل تنظیمات اصلی .env نام دارد و در ریشه پروژه قرار دارد.
در این فایل، میتوانید تنظیمات مربوط به پایگاه داده، سرور ایمیل، کش و سایر تنظیمات محیطی را تعیین کنید.
با تغییر مقدار APP_ENV میتوانید محیط کاری را تغییر دهید. مقادیر معمول برای این متغیر عبارتند از:
local (توسعه)،
production (تولید)،
staging (آزمایش)،
همچنین، میتوانید تنظیمات خاصی را برای هر محیط در فایلهای تنظیمات موجود در پوشه config/ مشخص کنید.
با استفاده از فایلهای تنظیمات و ساختار پوشهای منظم، لاراول به توسعهدهندگان امکان میدهد برنامههای وب پیچیده و قدرتمندی را به سرعت و با کیفیت بالا توسعه دهند.
#laravel
@AmirhDeveloper
.
Please open Telegram to view this post
VIEW IN TELEGRAM
فصل یک - Routing
بخش اول - روتینگ چیست؟
مسیریابی (Routing) یکی از مهمترین و پایهایترین قابلیتها به شمار میآید که امکان مدیریت درخواستهای ورودی به برنامه را فراهم میکند. مسیریابی در واقع تعیین میکند که درخواستهای کاربران به کدام قسمت از برنامه ارسال شوند و چه عملیاتی روی آنها انجام شود. به عبارت دیگر، مسیریابی مسئولیت اتصال URLهای مختلف به کنترلرها و اکشنهای مشخصی را بر عهده دارد.
هر مسیر میتواند به یک کنترلر یا یک کلوژر اشاره کند. همچنین، امکان تعریف مسیرهای پویا با استفاده از پارامترهای مسیریابی نیز وجود دارد که این قابلیت، انعطافپذیری بیشتری به برنامه میبخشد.
چندین فایل اصلی برای مدیریت مسیرها وجود دارد که هر کدام کاربرد خاص خود را دارند. این فایلها در دایرکتوری routes قرار دارند و به شما این امکان را میدهند که مسیرهای مختلف برنامه خود را سازماندهی و مدیریت کنید. در ادامه توضیح مختصری از هر فایل ارائه میشود:
1- web.php
این فایل برای تعریف مسیرهای وب استفاده میشود. مسیرهای تعریف شده در این فایل معمولاً به کنترلرهایی متصل میشوند که صفحات وب را رندر میکنند.
2- api.php
این فایل برای تعریف مسیرهای API استفاده میشود. این مسیرها معمولاً برای ارائه داده به برنامههای فرانتاند یا سایر سرویسها استفاده میشوند.
3- console.php
این فایل برای تعریف فرمانهای کنسول (artisan commands) استفاده میشود. شما میتوانید فرمانهای کنسول خود را در این فایل تعریف کنید که از طریق خط فرمان قابل اجرا هستند. این فرمانها به شما اجازه میدهند تا کارهای مختلفی مانند پاکسازی دیتابیس یا ایجاد کاربران نمونه را انجام دهید.
4- channels.php
این فایل برای تعریف کانالهای بروزرسانی لحظهای (broadcasting channels) استفاده میشود. این کانالها برای ارسال پیامها و دادهها به صورت لحظهای به مرورگرهای وب یا سایر سرویسها استفاده میشوند. شما میتوانید دسترسی به کانالها را در این فایل کنترل کنید.
در این فصل تنها با route های web و api آشنا می شویم.
متد های Route از کلاس خاصی(Facade-فَساد) با نام Route در دسترس هستند.
در فساد Route متد های متعددی وجود دارد که به تمامی آنها خواهیم پرداخت. اما برخی در این فصل توضیح داده می شود و برخی دیگر در فصل های آینده.
#laravel #فصل_1
@AmirhDeveloper
.
بخش اول - روتینگ چیست؟
مسیریابی (Routing) یکی از مهمترین و پایهایترین قابلیتها به شمار میآید که امکان مدیریت درخواستهای ورودی به برنامه را فراهم میکند. مسیریابی در واقع تعیین میکند که درخواستهای کاربران به کدام قسمت از برنامه ارسال شوند و چه عملیاتی روی آنها انجام شود. به عبارت دیگر، مسیریابی مسئولیت اتصال URLهای مختلف به کنترلرها و اکشنهای مشخصی را بر عهده دارد.
هر مسیر میتواند به یک کنترلر یا یک کلوژر اشاره کند. همچنین، امکان تعریف مسیرهای پویا با استفاده از پارامترهای مسیریابی نیز وجود دارد که این قابلیت، انعطافپذیری بیشتری به برنامه میبخشد.
چندین فایل اصلی برای مدیریت مسیرها وجود دارد که هر کدام کاربرد خاص خود را دارند. این فایلها در دایرکتوری routes قرار دارند و به شما این امکان را میدهند که مسیرهای مختلف برنامه خود را سازماندهی و مدیریت کنید. در ادامه توضیح مختصری از هر فایل ارائه میشود:
1- web.php
این فایل برای تعریف مسیرهای وب استفاده میشود. مسیرهای تعریف شده در این فایل معمولاً به کنترلرهایی متصل میشوند که صفحات وب را رندر میکنند.
Route::get('/', function () {
return view('welcome');
});2- api.php
این فایل برای تعریف مسیرهای API استفاده میشود. این مسیرها معمولاً برای ارائه داده به برنامههای فرانتاند یا سایر سرویسها استفاده میشوند.
Route::get('/', function () {
return response()->json(["hello"]);
});3- console.php
این فایل برای تعریف فرمانهای کنسول (artisan commands) استفاده میشود. شما میتوانید فرمانهای کنسول خود را در این فایل تعریف کنید که از طریق خط فرمان قابل اجرا هستند. این فرمانها به شما اجازه میدهند تا کارهای مختلفی مانند پاکسازی دیتابیس یا ایجاد کاربران نمونه را انجام دهید.
Artisan::command('inspire', function () {
$this->comment(Inspiring::quote());
})->describe('Display an inspiring quote');4- channels.php
این فایل برای تعریف کانالهای بروزرسانی لحظهای (broadcasting channels) استفاده میشود. این کانالها برای ارسال پیامها و دادهها به صورت لحظهای به مرورگرهای وب یا سایر سرویسها استفاده میشوند. شما میتوانید دسترسی به کانالها را در این فایل کنترل کنید.
Broadcast::channel('order.{orderId}', function ($user, $orderId) {
return $user->id === Order::find($orderId)->user_id;
});در این فصل تنها با route های web و api آشنا می شویم.
متد های Route از کلاس خاصی(Facade-فَساد) با نام Route در دسترس هستند.
use Illuminate\Support\Facades\Route;
در فساد Route متد های متعددی وجود دارد که به تمامی آنها خواهیم پرداخت. اما برخی در این فصل توضیح داده می شود و برخی دیگر در فصل های آینده.
#laravel #فصل_1
@AmirhDeveloper
.
فصل یک - Routing
بخش دوم - معرفی متد های روتینگ - قسمت اول
در این قسمت به 8 تا از پر کاربرد ترین و اصلی ترین متد های موجود در فساد Route می پردازیم:
1- متد get برای تعریف مسیری استفاده میشود که به درخواستهای HTTP GET پاسخ میدهد. این نوع درخواست معمولاً برای دریافت اطلاعات استفاده میشود.
کد بالا به معنی این است که اگر درخواستی را با متد GET به آدرس domain.example/users بدهیم، تابع ناشناس داده شده به متد(اکشن) اجرا خواهد شد.
حال فرض کنید میخواهیم مسیری ایجاد کنیم که اطلاعات یک کاربر خاص را بر اساس شناسه (ID) او نمایش دهد. در این صورت، میتوانیم از پارامترهای داینامیک استفاده کنیم:
در اینجا، {id} یک پارامتر داینامیک است که میتواند هر مقداری باشد. این مقدار از URL استخراج شده و به تابع بسته میشود.
توجه داشته باشید که پارامتر id یک پارامتر اجباری است و درصورتی که در url وارد نشود route ما اجرا نخواهد شد.
برای پارامتر های اختیاری می توان به صورت زیر عمل کرد:
پارامتر {id?} یک پارامتر اختیاری است و حتی اگر آن را وارد نکنیم route ما اجرا خواهد شد، اما توجه داشته باشید که مقدار پیشفرض آن را در اکشن تعریف نمایید.
پارامتر های داینامیک برای تمامی متد ها در دسترس هستند.
2- متد post برای تعریف مسیری استفاده میشود که به درخواستهای HTTP POST پاسخ میدهد. این نوع درخواست معمولاً برای ارسال داده به سرور و ایجاد منابع جدید استفاده میشود.
3- متد put برای تعریف مسیری استفاده میشود که به درخواستهای HTTP PUT پاسخ میدهد. این نوع درخواست معمولاً برای بهروزرسانی کامل یک منبع موجود استفاده میشود.
4- متد patch برای تعریف مسیری استفاده میشود که به درخواستهای HTTP PATCH پاسخ میدهد. این نوع درخواست معمولاً برای بهروزرسانی جزئی یک منبع موجود استفاده میشود.
5- متد delete برای تعریف مسیری استفاده میشود که به درخواستهای HTTP DELETE پاسخ میدهد. این نوع درخواست معمولاً برای حذف یک منبع موجود استفاده میشود.
6- متد options برای تعریف مسیری استفاده میشود که به درخواستهای HTTP OPTIONS پاسخ میدهد. این نوع درخواست برای بازگشت اطلاعاتی در مورد ارتباطات مجاز برای یک منبع خاص استفاده میشود.
7- متد any برای تعریف مسیری استفاده میشود که به تمامی انواع درخواستهای HTTP پاسخ میدهد. این نوع مسیر معمولاً برای مسیرهایی استفاده میشود که باید به تمامی درخواستها پاسخ دهند.
8- متد match به شما اجازه میدهد تا یک مسیر را برای چندین نوع درخواست HTTP تعریف کنید. این متد زمانی مفید است که میخواهید یک مسیر خاص به چندین متد HTTP مانند GET و POST پاسخ دهد.
این متد برخلاف سایر متد های توضیح داده شده یک پارامتر اضافه تر حاوی آرایه ای از متدهای مجاز را در ابتدا دریافت می کند و پس از آن مانند سایر متد ها عمل میکند.
متد های بالا در فایل های web.php و api.php قابل استفاده هستند.
#laravel #فصل_۱
@AmirhDeveloper
.
بخش دوم - معرفی متد های روتینگ - قسمت اول
در این قسمت به 8 تا از پر کاربرد ترین و اصلی ترین متد های موجود در فساد Route می پردازیم:
1- متد get برای تعریف مسیری استفاده میشود که به درخواستهای HTTP GET پاسخ میدهد. این نوع درخواست معمولاً برای دریافت اطلاعات استفاده میشود.
Route::get('/users', function () {
return 'List of users';
});کد بالا به معنی این است که اگر درخواستی را با متد GET به آدرس domain.example/users بدهیم، تابع ناشناس داده شده به متد(اکشن) اجرا خواهد شد.
حال فرض کنید میخواهیم مسیری ایجاد کنیم که اطلاعات یک کاربر خاص را بر اساس شناسه (ID) او نمایش دهد. در این صورت، میتوانیم از پارامترهای داینامیک استفاده کنیم:
Route::get('/user/{id}', function ($id) {
return "User ID is $id";
});در اینجا، {id} یک پارامتر داینامیک است که میتواند هر مقداری باشد. این مقدار از URL استخراج شده و به تابع بسته میشود.
توجه داشته باشید که پارامتر id یک پارامتر اجباری است و درصورتی که در url وارد نشود route ما اجرا نخواهد شد.
برای پارامتر های اختیاری می توان به صورت زیر عمل کرد:
Route::get('/user/{id?}', function ($id = 0) {
if ($id == 0){
return "Hello!";
}
return "User ID is $id";
});پارامتر {id?} یک پارامتر اختیاری است و حتی اگر آن را وارد نکنیم route ما اجرا خواهد شد، اما توجه داشته باشید که مقدار پیشفرض آن را در اکشن تعریف نمایید.
پارامتر های داینامیک برای تمامی متد ها در دسترس هستند.
2- متد post برای تعریف مسیری استفاده میشود که به درخواستهای HTTP POST پاسخ میدهد. این نوع درخواست معمولاً برای ارسال داده به سرور و ایجاد منابع جدید استفاده میشود.
Route::post('/users', function () {
return 'User created';
});3- متد put برای تعریف مسیری استفاده میشود که به درخواستهای HTTP PUT پاسخ میدهد. این نوع درخواست معمولاً برای بهروزرسانی کامل یک منبع موجود استفاده میشود.
Route::put('/users/{id}', function ($id) {
return 'User ' . $id . ' updated';
});4- متد patch برای تعریف مسیری استفاده میشود که به درخواستهای HTTP PATCH پاسخ میدهد. این نوع درخواست معمولاً برای بهروزرسانی جزئی یک منبع موجود استفاده میشود.
Route::patch('/users/{id}', function ($id) {
return 'User ' . $id . ' partially updated';
});5- متد delete برای تعریف مسیری استفاده میشود که به درخواستهای HTTP DELETE پاسخ میدهد. این نوع درخواست معمولاً برای حذف یک منبع موجود استفاده میشود.
Route::delete('/users/{id}', function ($id) {
return 'User ' . $id . ' deleted';
});6- متد options برای تعریف مسیری استفاده میشود که به درخواستهای HTTP OPTIONS پاسخ میدهد. این نوع درخواست برای بازگشت اطلاعاتی در مورد ارتباطات مجاز برای یک منبع خاص استفاده میشود.
Route::options('/users', function () {
return ['GET', 'POST', 'PUT', 'PATCH', 'DELETE'];
});7- متد any برای تعریف مسیری استفاده میشود که به تمامی انواع درخواستهای HTTP پاسخ میدهد. این نوع مسیر معمولاً برای مسیرهایی استفاده میشود که باید به تمامی درخواستها پاسخ دهند.
Route::any('/contact', function () {
return 'Contact form';
});8- متد match به شما اجازه میدهد تا یک مسیر را برای چندین نوع درخواست HTTP تعریف کنید. این متد زمانی مفید است که میخواهید یک مسیر خاص به چندین متد HTTP مانند GET و POST پاسخ دهد.
Route::match(['get', 'post'], '/contact', function () {
//
});این متد برخلاف سایر متد های توضیح داده شده یک پارامتر اضافه تر حاوی آرایه ای از متدهای مجاز را در ابتدا دریافت می کند و پس از آن مانند سایر متد ها عمل میکند.
متد های بالا در فایل های web.php و api.php قابل استفاده هستند.
#laravel #فصل_۱
@AmirhDeveloper
.
فصل یک - Routing
بخش دوم - معرفی متد های روتینگ - قسمت دوم
در ادامه معرفی متد های Routing به 9 متد دیگر از فساد Route می پردازیم. این متد ها برای اعتبارسنجی پارامتر های داینامیک دریافتی از URL، کاربرد دارند.
در ادامه هر یک از این متد ها را با مثال معرفی میکنیم:
1- متد where به شما امکان میدهد تا یک محدودیت سفارشی برای پارامترهای مسیر تعیین کنید. این محدودیتها بر اساس یک الگوی منظم (regex) تعریف میشوند. به عنوان مثال، میتوانید تعیین کنید که پارامتر id باید عددی باشد.
در این مثال، پارامتر id باید فقط شامل اعداد باشد، در غیر این صورت مسیر مطابقت نمیکند.
2- متد whereAlpha تضمین میکند که پارامترهای مشخص شده فقط حروف الفبایی باشند. یعنی پارامتر مورد نظر باید فقط شامل حروف باشد و هیچ عدد یا کاراکتر دیگری نباید در آن باشد.
در این مثال، پارامتر name باید فقط شامل حروف باشد، در غیر این صورت مسیر مطابقت نمیکند.
3- متد whereAlphaNumeric پارامترها را محدود به حروف و اعداد میکند. یعنی پارامتر مورد نظر میتواند شامل حروف و اعداد باشد ولی هیچ کاراکتر خاصی نباید در آن باشد.
در این مثال، پارامتر code باید فقط شامل حروف و اعداد باشد، در غیر این صورت مسیر مطابقت نمیکند.
4- متد whereNumber پارامترها را فقط به اعداد محدود میکند. یعنی پارامتر مورد نظر باید فقط شامل اعداد باشد و هیچ حرف یا کاراکتر دیگری نباید در آن باشد.
در این مثال، پارامتر id باید فقط شامل اعداد باشد، در غیر این صورت مسیر مطابقت نمیکند.
5- متد whereUlid پارامترها را محدود به ULID (Unique Lexicographically Sortable Identifier) میکند که یک نوع شناسه منحصر به فرد و مرتب شونده است.
در این مثال، پارامتر ulid باید یک ULID معتبر باشد، در غیر این صورت مسیر مطابقت نمیکند.
6- متد whereUuid پارامترها را محدود به UUID (Universally Unique Identifier) میکند.
در این مثال، پارامتر uuid باید یک UUID معتبر باشد، در غیر این صورت مسیر مطابقت نمیکند.
7- متد whereIn تضمین میکند که پارامترها یکی از مقادیر تعیین شده باشند. یعنی پارامتر مورد نظر باید یکی از مقادیر مشخص شده در آرایه باشد.
در این مثال، پارامتر state باید یکی از مقادیر active، inactive یا pending باشد، در غیر این صورت مسیر مطابقت نمیکند.
8- متد pattern برای تعیین یک الگوی پیشفرض برای پارامترهای مسیر بکار می رود. این متد برای تنظیم الگوها به طور کلی برای تمام مسیرها در برنامه استفاده میشود.
این متد یک regex را به طور کلی برای تمامی پارامتر ها با نام slug تعیین میکند. به عبارتی در تمام مسیر ها اعمال می شود و محدود به یک مسیر نیست.
9- متد patterns مشابه متد pattern است با این تفاوت که می توانید چندین الگوی سفارشی برای چندین پارامتر به طور همزمان تعیین کنید.
در مثال بالا یک regex برای پارامتر های id و slug تعریف شده که در تمام مسیر ها اعمال می شود و محدود به یک مسیر نیست.
این روشها به شما امکان میدهند تا الگوهای پیشفرض برای پارامترهای مسیرها را تعیین کنید تا اطمینان حاصل شود که درخواستها به درستی پردازش میشوند و از دادههای نامعتبر جلوگیری شود.
#laravel #فصل_۱
@AmirhDeveloper
.
بخش دوم - معرفی متد های روتینگ - قسمت دوم
در ادامه معرفی متد های Routing به 9 متد دیگر از فساد Route می پردازیم. این متد ها برای اعتبارسنجی پارامتر های داینامیک دریافتی از URL، کاربرد دارند.
در ادامه هر یک از این متد ها را با مثال معرفی میکنیم:
1- متد where به شما امکان میدهد تا یک محدودیت سفارشی برای پارامترهای مسیر تعیین کنید. این محدودیتها بر اساس یک الگوی منظم (regex) تعریف میشوند. به عنوان مثال، میتوانید تعیین کنید که پارامتر id باید عددی باشد.
Route::get('user/{id}', function ($id) {
return "User ID: $id";
})->where('id', '[0-9]+');در این مثال، پارامتر id باید فقط شامل اعداد باشد، در غیر این صورت مسیر مطابقت نمیکند.
2- متد whereAlpha تضمین میکند که پارامترهای مشخص شده فقط حروف الفبایی باشند. یعنی پارامتر مورد نظر باید فقط شامل حروف باشد و هیچ عدد یا کاراکتر دیگری نباید در آن باشد.
Route::get('user/{name}', function ($name) {
return "User Name: $name";
})->whereAlpha('name');در این مثال، پارامتر name باید فقط شامل حروف باشد، در غیر این صورت مسیر مطابقت نمیکند.
3- متد whereAlphaNumeric پارامترها را محدود به حروف و اعداد میکند. یعنی پارامتر مورد نظر میتواند شامل حروف و اعداد باشد ولی هیچ کاراکتر خاصی نباید در آن باشد.
Route::get('product/{code}', function ($code) {
return "Product Code: $code";
})->whereAlphaNumeric('code');در این مثال، پارامتر code باید فقط شامل حروف و اعداد باشد، در غیر این صورت مسیر مطابقت نمیکند.
4- متد whereNumber پارامترها را فقط به اعداد محدود میکند. یعنی پارامتر مورد نظر باید فقط شامل اعداد باشد و هیچ حرف یا کاراکتر دیگری نباید در آن باشد.
Route::get('order/{id}', function ($id) {
return "Order ID: $id";
})->whereNumber('id');در این مثال، پارامتر id باید فقط شامل اعداد باشد، در غیر این صورت مسیر مطابقت نمیکند.
5- متد whereUlid پارامترها را محدود به ULID (Unique Lexicographically Sortable Identifier) میکند که یک نوع شناسه منحصر به فرد و مرتب شونده است.
Route::get('item/{ulid}', function ($ulid) {
return "Item ULID: $ulid";
})->whereUlid('ulid');در این مثال، پارامتر ulid باید یک ULID معتبر باشد، در غیر این صورت مسیر مطابقت نمیکند.
6- متد whereUuid پارامترها را محدود به UUID (Universally Unique Identifier) میکند.
Route::get('user/{uuid}', function ($uuid) {
return "User UUID: $uuid";
})->whereUuid('uuid');در این مثال، پارامتر uuid باید یک UUID معتبر باشد، در غیر این صورت مسیر مطابقت نمیکند.
7- متد whereIn تضمین میکند که پارامترها یکی از مقادیر تعیین شده باشند. یعنی پارامتر مورد نظر باید یکی از مقادیر مشخص شده در آرایه باشد.
Route::get('status/{state}', function ($state) {
return "Status: $state";
})->whereIn('state', ['active', 'inactive', 'pending']);در این مثال، پارامتر state باید یکی از مقادیر active، inactive یا pending باشد، در غیر این صورت مسیر مطابقت نمیکند.
8- متد pattern برای تعیین یک الگوی پیشفرض برای پارامترهای مسیر بکار می رود. این متد برای تنظیم الگوها به طور کلی برای تمام مسیرها در برنامه استفاده میشود.
Route::pattern('slug', '[A-Za-z0-9-]+');
Route::get('post/{slug}', function ($slug) {
return "Post Slug: $slug";
});این متد یک regex را به طور کلی برای تمامی پارامتر ها با نام slug تعیین میکند. به عبارتی در تمام مسیر ها اعمال می شود و محدود به یک مسیر نیست.
9- متد patterns مشابه متد pattern است با این تفاوت که می توانید چندین الگوی سفارشی برای چندین پارامتر به طور همزمان تعیین کنید.
Route::patterns([
'id' => '[0-9]+',
'slug' => '[A-Za-z0-9-]+',
]);
Route::get('article/{id}/{slug}', function ($id, $slug) {
return "Article ID: $id, Slug: $slug";
});
در مثال بالا یک regex برای پارامتر های id و slug تعریف شده که در تمام مسیر ها اعمال می شود و محدود به یک مسیر نیست.
این روشها به شما امکان میدهند تا الگوهای پیشفرض برای پارامترهای مسیرها را تعیین کنید تا اطمینان حاصل شود که درخواستها به درستی پردازش میشوند و از دادههای نامعتبر جلوگیری شود.
#laravel #فصل_۱
@AmirhDeveloper
.
فصل یک - Routing
بخش دوم - معرفی متد های روتینگ - قسمت سوم
در این قسمت به سایر متد های روتینگ می پردازیم:
1- متد redirect برای ریدایرکت کردن یک URL به URL دیگر استفاده میشود.
2- متد permanentRedirect برای ریدایرکت دائمی (کد وضعیت HTTP 301) به کار میرود.
3- متد view برای بازگرداندن یک ویو به کار میرود و یک صفحه HTML را رندر می کند.
نام فایل view بدون پسوند داده می شود.
همچنین می توانید پارامتر هایی را همراه آن ارسال کنید:
در فصل های بعدی به طور مفصل درمورد view ها توضیح داده می شود.
4- متد name برای نامگذاری یک مسیر استفاده میشود که به شما امکان میدهد تا به سادگی به آن مسیر ارجاع دهید.
5- متد group برای گروهبندی روتها و استفاده از تنظیمات مشترک بین آنها به کار میرود.
6- متد domain برای تعریف روتهای وابسته به یک دامنه خاص استفاده میشود.
7- متد prefix برای اضافه کردن پیشوند به یک گروه از روتها به کار میرود.
8- متد fallback برای تعریف مسیری استفاده میشود که در صورتی که هیچ یک از روتها مطابقت نداشته باشند، فراخوانی میشود.
9- متد current برای بازگرداندن اطلاعات مربوط به مسیر فعلی به کار میرود.
10- متد currentRouteName برای بازگرداندن نام مسیر فعلی به کار میرود.
11- متد currentRouteAction برای بازگرداندن اکشن کنترلر مربوط به مسیر فعلی به کار میرود.
بقیه متد های روتینگ در فصل های آینده پس از آموزش پیش نیاز ها توضیح داده می شود.
#laravel #فصل_۱
@AmirhDeveloper
.
بخش دوم - معرفی متد های روتینگ - قسمت سوم
در این قسمت به سایر متد های روتینگ می پردازیم:
1- متد redirect برای ریدایرکت کردن یک URL به URL دیگر استفاده میشود.
Route::redirect('/from-url', '/to-url');
// OR
Route::redirect('/from-home', '/to', 301);2- متد permanentRedirect برای ریدایرکت دائمی (کد وضعیت HTTP 301) به کار میرود.
Route::permanentRedirect('/from-url', '/to-url');3- متد view برای بازگرداندن یک ویو به کار میرود و یک صفحه HTML را رندر می کند.
نام فایل view بدون پسوند داده می شود.
Route::view('/welcome', 'welcome');
// welcome -> resources/views/welcome.blade.phpهمچنین می توانید پارامتر هایی را همراه آن ارسال کنید:
Route::view('/about', 'about', ['key' => 'value']);در فصل های بعدی به طور مفصل درمورد view ها توضیح داده می شود.
4- متد name برای نامگذاری یک مسیر استفاده میشود که به شما امکان میدهد تا به سادگی به آن مسیر ارجاع دهید.
Route::get('/user/profile', $action)->name('profile');
route('profile'); // domain.example/user/profile5- متد group برای گروهبندی روتها و استفاده از تنظیمات مشترک بین آنها به کار میرود.
Route::group(['prefix' => 'admin'], function () {
Route::get('/dashboard', $action);
});6- متد domain برای تعریف روتهای وابسته به یک دامنه خاص استفاده میشود.
Route::domain('api.example.com')->group(function () {
Route::get('/users', function () {
// api.example.com/users
});
// ...
});7- متد prefix برای اضافه کردن پیشوند به یک گروه از روتها به کار میرود.
Route::prefix('admin')->group(function () {
Route::get('/users', function () {
// domain.example/admin/users
});
// ...
});8- متد fallback برای تعریف مسیری استفاده میشود که در صورتی که هیچ یک از روتها مطابقت نداشته باشند، فراخوانی میشود.
Route::fallback(function () {
return 404;
});9- متد current برای بازگرداندن اطلاعات مربوط به مسیر فعلی به کار میرود.
$currentRoute = Route::current();
10- متد currentRouteName برای بازگرداندن نام مسیر فعلی به کار میرود.
$currentRouteName = Route::currentRouteName();
11- متد currentRouteAction برای بازگرداندن اکشن کنترلر مربوط به مسیر فعلی به کار میرود.
$currentRouteAction = Route::currentRouteAction();
بقیه متد های روتینگ در فصل های آینده پس از آموزش پیش نیاز ها توضیح داده می شود.
#laravel #فصل_۱
@AmirhDeveloper
.