خطوط htpasswd. آپاچی/nginx را با هشهای نمکدار APR1-MD5 یا SHA-1، کاملاً آفلاین در مرورگر خود بسازید.
— خروجی اینجا نمایش داده میشود —
Bcrypt گنجانده نشده است. APR1-MD5 نمکدار و توصیهشده است؛ SHA-1 بدون نمک، فقط قدیمی.
درباره این ابزار
یک خط اعتبارنامهی htpasswd. آمادهی چسباندن (username:hash) برای احراز هویت پایهی HTTP آپاچی یا nginx بسازید. نام کاربری، رمز عبور و همهی هشگیری بهصورت محلی در مرورگر شما رخ میدهد — چیزی بارگذاری نمیشود، و هیچ eval یا کتابخانهی خارجی وجود ندارد.
دو الگوریتم پشتیبانی میشوند. APR1-MD5 (قالب $apr1$ آپاچی) با JavaScript خالص پیادهسازی شده است، شامل یک MD5 خودکفا و حلقهی کامل crypt نمکدار ۱۰۰۰ دوری، با یک نمک تصادفی ۸ کاراکتری برگرفته از crypto.getRandomValues. SHA-1 از crypto.subtle.digest داخلی مرورگر استفاده میکند که با base64 کدگذاری شده و با {SHA} پیشوند میگیرد، مطابق خروجی htpasswd -s. Bcrypt عمداً گنجانده نشده چون یک bcrypt سریع و درستِ کاملاً JS برای اجرا در سمت کاربر ناعملی است.
یک نام کاربری و رمز عبور تایپ کنید، یک الگوریتم انتخاب کنید و خط حاصل را در فایل htpasswd. خود کپی کنید. از «نمک جدید» برای بازتولید نمک APR1 استفاده کنید (هر ذخیره برای همان رمز عبور یک هش متفاوت تولید میکند، که مورد انتظار و درست است).
پرسشهای پرتکرار
آیا رمز عبور من به جایی ارسال میشود؟
خیر. همهی هشگیری کاملاً در مرورگر شما با یک MD5 داخلی برای APR1 و crypto.subtle بومی برای SHA-1 اجرا میشود. چیزی منتقل نمیشود و هیچ eval وجود ندارد.
کدام الگوریتم را باید انتخاب کنم؟
APR1-MD5 ($apr1$) پیشفرض توصیهشدهی آپاچی و نمکدار است، پس امنتر از دو گزینهی اینجاست. SHA-1 ({SHA}) بدون نمک است و عمدتاً برای پیکربندیهای قدیمی یا سازگاری با nginx مفید است.
چرا هش APR1 هر بار تغییر میکند؟
APR1 از یک نمک تصادفی ۸ کاراکتری استفاده میکند، پس همان رمز عبور هر بار یک هش متفاوت تولید میکند. این طبق طراحی است؛ آپاچی هنگام بررسی یک ورود، نمک را از هش ذخیرهشده بازمیخواند.
چرا bcrypt ارائه نمیشود؟
Bcrypt عمداً کنار گذاشته شده است. یک bcrypt کاملاً JavaScript درست، بزرگ و کند در مرورگر خواهد بود، پس این ابزار بهجای آن حالتهای قابلاعتماد و آفلاین APR1-MD5 و SHA-1 را عرضه میکند.