ایجاد یک تولید کننده رمز عبور – انجمن DEV

چند بار هنگام تلاش برای ایجاد حساب کاربری در یک وب سایت از ویژگی ایجاد رمز عبور در مرورگر خود استفاده کرده اید؟ همه ما می دانیم که داشتن پسوردهای امن چقدر آزاردهنده است. شاید برخی از کاربران وب سایت شما نیز با این وضعیت مشابه روبرو شوند.
در این بخش، ما یک تولید کننده رمز عبور ایجاد می کنیم، اگر می خواهید این ویژگی را به طور پیش فرض به وب سایت خود اضافه کنید، می تواند مفید باشد. گاهی اوقات در کروم، برخی از وبسایتها ویژگی «تولید خودکار رمز عبور» را نمایش نمیدهند، بنابراین تلاش برای ایجاد آن ضرری ندارد. همچنین تجربه کاربری خوبی را برای کاربر به ارمغان میآورد، کاربر از زیر بار نگرانی خلاص شده است. ایجاد یک رمز عبور امن
ما این تابع تولید کننده رمز عبور را با استفاده از تایپ اسکریپت خواهیم ساخت. تایپ اسکریپت ابرمجموعه ای از جاوا اسکریپت است، تایپ اسکریپت به شدت تایپ می شود و به جاوا اسکریپت کامپایل می شود.
function* generatePassword(): Generator<string, void> {
while (true) {
let charSet: string = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
let length = Math.floor(Math.random() * (16 - 8 + 1) + 8);
let hasNumber = Math.random() < 0.5;
let hasSpecial = Math.random() < 0.5;
let password = '';
if (hasNumber) charSet += '0123456789';
if (hasSpecial) charSet += '!@#$%^&*';
for (let i = 0; i < length; i++) {
password += charSet[Math.floor(Math.random() * charSet.length)];
if (
password.match(
/^(?=.*[0-9])(?=.*[!@#$%^&*])[a-zA-Z0-9!@#$%^&*]{10,16}$/
)
) yield password;
}
}
}
const passwordIterator = generatePassword();
ما تابع مولد رمز عبور را داریم که در بالا تعریف شده است، این یک تابع مولد است، توابع مولد برای ایجاد Iterators استفاده می شود. چرا به جای تابع عادی از تابع مولد استفاده کردیم؟ اول به این دلیل که توابع ژنراتور به طور خاص برای این منظور طراحی شده اند. ابتدا وقتی یک تابع مولد را فراخوانی میکنیم، نمیتوانیم دادهها را از تابع خارج کنیم، فقط زمانی میتوانیم این داده را مصرف کنیم که توسط ژنراتور به ما فشار داده شده باشد، به عبارت دیگر، زمانی که در دسترس باشد. ما
به عنوان یک سیستم فشار چندگانه، یک ژنراتور میتواند مقادیر بینهایتی تولید کند، این به دلیل حلقه while است، با شرط واقعی اطمینان از اینکه این ژنراتور به انتشار دادهها در زمانی که در دسترس است ادامه میدهد، ما فقط باید مشترک شویم و دادهها را با تماس مصرف کنیم. را next()
روش روی تکرارگر به ما بازگشت.
به خود تابع، لیستی از کاراکترهایی که میخواهیم رمز عبور ما ساخته شود دریافت میکنیم، سپس طول رمز عبور را تعیین میکنیم، نمادها و اعداد را به مجموعه کاراکتری که رمز عبور به آن نیاز دارد، اضافه میکنیم. سپس یک قسمت تصادفی از مجموعه کاراکترها را برش میدهیم، سپس رشته بهدستآمده، ذخیره شده در متغیر رمز عبور را با رمز عبوری برای RegExp که تأیید میکند رمز عبور معتبر است مطابقت میدهیم، سپس از کلمه کلیدی yield برای ارسال این دادهها از ژنراتور استفاده میکنیم. حلقه دوباره اجرا می شود و روند دوباره تکرار می شود. بنابراین هر بار که در آن مشترک می شویم، یک رمز عبور تصادفی جدید دریافت می کنیم.
const passwordIterator = generatePassword();
console.log(passwordIterator.next());
// {value: "h0tI%ky$%f", done: false}
اکنون مولد رمز عبور خود را با موفقیت ساختهاید، اگر میخواهید ببینید چگونه میتوانیم با استفاده از یک تابع مولد کد تولید کنیم، نظرات خود را در زیر بنویسید.