crypto-random-string؛ رشتهٔ تصادفی امن در یک خط
خلاصهٔ کاملتر
crypto-random-string یه پکیج تککارهست که یه رشتهٔ تصادفی «رمزنگاریقوی» تولید میکنه — یعنی برخلاف Math.random برای کارهای امنیتی هم قابل اتکاست. تو توضیحات پروژه اومده که برای ساختن شناسه، slug، salt، کد PIN و دادهٔ تستی به درد میخوره، و هم تو Node.js و هم تو مرورگر کار میکنه.
APIاش فقط یه تابع با یه آبجکت آپشنه: length اجباریه و type تعیین میکنه از کدوم مجموعه کاراکتر استفاده بشه. خروجی پیشفرض هگزه:
import cryptoRandomString from 'crypto-random-string';
cryptoRandomString({length: 10});
//=> '2cf05d94db'
cryptoRandomString({length: 6, type: 'distinguishable'});
//=> 'CDEHKM'مقدارهای مجاز type عبارتن از hex، base64، url-safe، numeric، distinguishable، ascii-printable و alphanumeric. جالبترینشون distinguishable هست: فقط حروف بزرگ و رقمهایی که به هم شبیه نیستن، مخصوص وقتی که کاربر باید کدی رو از روی صفحه بخونه و جای دیگهای تایپ کنه. alphanumeric هم برای ساختن مقدار nonce پیشنهاد شده و ascii-printable برای تولید پسورد با بیشترین تنوع کاراکتر.
اگه مجموعههای آماده به کارت نمیاد، میتونی با آپشن characters مجموعهٔ دلخواه خودت رو بدی (بین ۱ تا ۶۵۵۳۶ کاراکتر)، ولی type و characters رو نمیشه با هم ست کرد. هر کاراکتر با احتمال برابر انتخاب میشه، پس اگه یه کاراکتر رو تو مجموعه تکرار کنی شانس انتخابش بیشتر میشه. length هم تعداد کاراکتره نه واحد UTF-16، برای همین با ایموجی و کاراکترهای خارج از BMP هم درست رفتار میکنه.
نکات کلیدی:
- رشتهٔ تصادفی رمزنگاریقوی، مناسب شناسه، salt، کد PIN و slug
- خروجی پیشفرض هگز؛ base64، url-safe، numeric، alphanumeric و ascii-printable هم هست
- حالت distinguishable برای کدهایی که آدم باید بخونه و تایپ کنه
- با characters میشه مجموعه کاراکتر دلخواه داد، ولی نه همزمان با type
- length بر حسب کاراکتر شمرده میشه، پس ایموجی هم درست هندل میشه




