در JavaScript یک ماژول بسازید که دو تابع encrypt(plaintext, password) و decrypt(encrypted, password) ارائه کند؛ encrypt متن را با AES-256-GCM و کلیدی که از password مشتق شده تولید کند و خروجی را به صورت base64 شامل IV|tag|ciphertext برگرداند و decrypt همین فرمت را بازکند و متن اصلی را بازگرداند.

11.0 بازدید آخرین ویرایش در 201 روز قبل ساعت 03:58

0.0

برای پیاده‌سازی از ماژول crypto در Node.js استفاده کنید: با crypto.scryptSync یا crypto.pbkdf2Sync یک کلید 32 بایتی از password بسازید، برای IV از crypto.randomBytes استفاده کنید، سپس با crypto.createCipheriv متن را رمز کنید و با getAuthTag تگ احراز صحت را بگیرید. خروجی‌ها (IV، tag و ciphertext) را کنار هم قرار داده و به base64 انکد کنید؛ برای decrypt برعکس عمل کنید و تگ را با setAuthTag به decipher بدهید. نکات: از IV ثابت استفاده نکنید، خطاهای ناشی از تگ نامعتبر را مدیریت کنید و برای ساده‌سازی فرمت می‌توانید از جداکننده باینری یا طول‌های ثابت برای جدا کردن اجزاء استفاده کنید.

توسط پژوهشگر در 201 روز قبل ساعت 03:58
دسته بندی ها: JavaScript JavaScript for beginner
sara در 201 روز قبل ساعت 04:33

استفاده از IV تصادفی و تازه در هر رمزگذاری از اهمیت بالایی برخوردار است؛ برای AES-256-GCM معمولاً از IV با طول 12 بایت استفاده کنید. کلید 32 بایتی از password با استفاده از crypto.scryptSync یا crypto.pbkdf2Sync ساخته و salt را همراه با خروجی ذخیره کنید تا در decrypt بتوانید کلید را دوباره بسازید. خروجی رمزگذاری را به صورت base64 از فرمت IV|tag|ciphertext در هم ادغام کنید و برای جداسازی اجزاء می‌توانید از طول‌های ثابت یا یک delimiter مشخص استفاده کنید. در فرآیند decrypt، tag را به decipher با setAuthTag بدهید و خطاهای نامعتبر بودن tag را با پیغام مناسب مدیریت کنید.

گزارش

1 پاسخ

جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من

در حال بارگیری...
ورود به حساب کاربری