ตัวสร้าง NanoID แบบสุ่ม
สร้าง NanoID ที่ปลอดภัยในระดับการเข้ารหัส - ทางเลือกที่ทันสมัยและกะทัดรัดแทน UUID มาพร้อมกับชุดตัวอักษรที่ปรับแต่งได้ (ปลอดภัยสำหรับ URL, ฐานสิบหก, ตัวเลขและอักษร, ไม่มีตัวอักษรที่คล้ายกัน), ความยาวที่ปรับได้ (8-64 ตัวอักษร), เครื่องคำนวณโอกาสในการเกิดการชนกัน, การสร้างจำนวนมาก และการคัดลอกในคลิกเดียว เหมาะสำหรับนักพัฒนาที่สร้างฐานข้อมูล, API, ตัวย่อ URL และระบบกระจายตัว
ตัวบล็อกโฆษณาของคุณทำให้เราไม่สามารถแสดงโฆษณาได้
MiniWebtool ให้ใช้งานฟรีเพราะมีโฆษณา หากเครื่องมือนี้ช่วยคุณได้ โปรดสนับสนุนเราด้วย Premium (ไม่มีโฆษณา + เร็วขึ้น) หรืออนุญาต MiniWebtool.com แล้วรีโหลดหน้าเว็บ
- หรืออัปเกรดเป็น Premium (ไม่มีโฆษณา)
- อนุญาตโฆษณาสำหรับ MiniWebtool.com แล้วรีโหลด
เกี่ยวกับ ตัวสร้าง NanoID แบบสุ่ม
ยินดีต้อนรับสู่ ตัวสร้าง NanoID แบบสุ่ม เครื่องมือออนไลน์ที่ทรงพลังสำหรับการสร้างตัวระบุสตริงที่ไม่ซ้ำกัน ปลอดภัย และเป็นมิตรกับ URL NanoID เป็นทางเลือกที่ทันสมัยและน้ำหนักเบาแทน UUID (Universally Unique Identifiers) โดยให้ ID ที่สั้นกว่าพร้อมความทนทานต่อการชนกันที่เทียบเท่ากัน ไม่ว่าคุณจะสร้าง API ฐานข้อมูล ตัวย่อ URL หรือระบบกระจายตัว ตัวสร้างนี้จะให้ ID ที่ปลอดภัยในระดับการเข้ารหัสพร้อมชุดตัวอักษรที่ปรับแต่งได้ ความยาวที่ปรับได้ และการวิเคราะห์โอกาสในการเกิดการชนกันแบบเรียลไทม์
NanoID คืออะไร?
NanoID เป็นตัวสร้างสตริง ID ที่ไม่ซ้ำกัน ขนาดเล็ก ปลอดภัย และเป็นมิตรกับ URL เดิมสร้างขึ้นสำหรับ JavaScript โดย Andrey Sitnik ตั้งแต่นั้นเป็นต้นมาก็ได้มีการพอร์ตไปยังทุกภาษาโปรแกรมหลัก นวัตกรรมที่สำคัญของ NanoID คือการใช้ชุดตัวอักษรที่ใหญ่กว่า (64 ตัวอักษรโดยค่าเริ่มต้น) แทนที่จะเป็นตัวเลขฐานสิบหก 16 ตัวของ UUID ซึ่งหมายความว่าเอนโทรปีต่อตัวอักษรมากขึ้นและ ID ที่สั้นลง
NanoID เริ่มต้นจะมีลักษณะดังนี้: V1StGXR8_Z5jdHi6B-myT
การเปรียบเทียบ NanoID กับ UUID
| คุณสมบัติ | NanoID | UUID v4 |
|---|---|---|
| ความยาวเริ่มต้น | 21 ตัวอักษร | 36 ตัวอักษร (รวมเครื่องหมายยัติภังค์) |
| ขนาดของชุดตัวอักษร | 64 ตัวอักษร (A-Za-z0-9_-) | 16 ตัวอักษร (0-9a-f) |
| เอนโทรปี | ~126 บิต (21 ตัวอักษร) | ~122 บิต (ตัวเลขฐานสิบหก 32 ตัว) |
| ปลอดภัยสำหรับ URL | ✓ ไม่ต้องเข้ารหัส | ✗ เครื่องหมายยัติภังค์ต้องมีการเข้ารหัสในบางบริบท |
| ปรับแต่งได้ | ✓ ชุดตัวอักษรและความยาว | ✗ รูปแบบคงที่ (8-4-4-4-12) |
| ประสิทธิภาพของขนาด | ✓ 6 บิตต่อตัวอักษร | ✗ 4 บิตต่อตัวอักษร |
| รูปแบบ | สตริงที่กะทัดรัด | xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx |
เครื่องมือนี้นี้สร้าง NanoID ที่ปลอดภัยได้อย่างไร
การสุ่มระดับการเข้ารหัส
ตัวสร้างนี้ใช้โมดูล secrets ของ Python ที่ฝั่งเซิร์ฟเวอร์ ซึ่งให้การสร้างตัวเลขสุ่มที่ปลอดภัยในระดับการเข้ารหัส โดยได้รับการสนับสนุนจากแหล่งเอนโทรปีของระบบปฏิบัติการ (/dev/urandom ใน Linux/macOS, CryptGenRandom ใน Windows) แต่ละตัวอักษรใน NanoID จะถูกเลือกอย่างเป็นอิสระและไม่สามารถคาดเดาได้จากชุดตัวอักษรที่เลือก
ชุดตัวอักษรที่ตั้งไว้ล่วงหน้า
เราขอเสนอ 9 ชุดตัวอักษรที่ตั้งไว้ล่วงหน้าที่คัดสรรมาอย่างดีเพื่อให้เหมาะกับกรณีการใช้งานที่แตกต่างกัน:
- NanoID เริ่มต้น (64 ตัวอักษร): ชุดตัวอักษรมาตรฐานของ NanoID
A-Za-z0-9_-ปลอดภัยสำหรับ URL กะทัดรัด และเข้ากันได้กว้างขวาง ให้เอนโทรปี 6 บิตต่อตัวอักษร - ตัวอักษรและตัวเลข (62 ตัวอักษร): ตัวอักษรและตัวเลขเท่านั้น ไม่มีตัวอักษรพิเศษ ปลอดภัยสำหรับชื่อไฟล์ ฟิลด์ฐานข้อมูล และบริบทที่สัญลักษณ์ทำให้เกิดปัญหา
- ฐานสิบหก (16 ตัวอักษร): รูปแบบฐานสิบหกแบบดั้งเดิม มีประโยชน์เมื่อ ID ต้องรวมเข้ากับระบบฐานสิบหก เช่น สี CSS หรือค่าแฮช
- ตัวเลขเท่านั้น (10 ตัวอักษร): ID ที่เป็นตัวเลขเท่านั้น เหมาะสำหรับหมายเลขคำสั่งซื้อ รหัสอ้างอิง หรือระบบที่รับเฉพาะตัวเลขเท่านั้น
- ตัวพิมพ์เล็ก / ตัวพิมพ์ใหญ่ (26 ตัวอักษร): ชุดตัวอักษรแบบตัวพิมพ์เดียวสำหรับระบบที่ไม่แยกความแตกต่างระหว่างตัวพิมพ์เล็กและใหญ่ หรือเพื่อความสอดคล้องทางสายตา
- ไม่มีตัวอักษรที่คล้ายกัน (57 ตัวอักษร): ลบตัวอักษรที่สับสนง่ายในหลายฟอนต์ (1/l/I, 0/O/o) เหมาะสำหรับโค้ดที่มนุษย์อ่านได้ เช่น ลิงก์เชิญ หมายเลขยืนยัน และสิ่งใดก็ตามที่ผู้ใช้ต้องพิมพ์ด้วยตนเอง
- ปลอดภัยสำหรับ URL (66 ตัวอักษร): ชุดตัวอักษรขยายพร้อม
-._~ตามตัวอักษรที่ไม่สงวนไว้ของ RFC 3986 - ชุดตัวอักษรที่กำหนดเอง: กำหนดชุดตัวอักษรของคุณเอง ตัวอักษรที่ซ้ำกันจะถูกลบออกโดยอัตโนมัติ
คำอธิบายโอกาสในการเกิดการชนกัน
โอกาสในการเกิดการชนกันเป็นการวัดความเป็นไปได้ที่ ID สองตัวที่สร้างขึ้นอย่างอิสระจะเหมือนกัน สิ่งนี้ถูกกำหนดโดย ปัญหาความคล้ายคลึงของวันเกิด ในทฤษฎีความน่าจะเป็น:
- ID ที่เป็นไปได้ทั้งหมด: alphabet_size ^ id_length สำหรับ NanoID เริ่มต้น: 64^21 = ~2^126
- สำหรับ n ID ที่สร้างขึ้น: โอกาสในการเกิดการชนกัน ~ n^2 / (2 * total_possible)
- ด้วย 1,000 ID: โอกาสน้อยมากอย่างยิ่ง (~10^-33)
- ในการไปถึงโอกาสชนกัน 1% ด้วยการตั้งค่าเริ่มต้น: คุณต้องมี ID ประมาณ 10^18 ตัว (หนึ่งล้านล้านล้าน)
เครื่องคำนวณโอกาสในการเกิดการชนกันในหน้านี้จะแสดงการวิเคราะห์แบบเรียลไทม์ตามชุดตัวอักษรและความยาว ID ที่คุณเลือก ช่วยให้คุณตัดสินใจได้อย่างรอบคอบเกี่ยวกับการกำหนดค่า ID สำหรับมาตราส่วนเฉพาะของคุณ
วิธีใช้ตัวสร้าง NanoID
- เลือกชุดตัวอักษรที่ตั้งไว้ล่วงหน้า: เลือกจาก 9 ค่าที่ตั้งไว้ล่วงหน้าหรือกำหนดชุดตัวอักษรที่กำหนดเอง การแสดงตัวอย่างชุดตัวอักษรจะแสดงตัวอักษรที่แน่นอนที่จะใช้
- ตั้งค่าความยาว ID: เลือกตั้งแต่ 8 ถึง 64 ตัวอักษร ค่าเริ่มต้นคือ 21 ซึ่งให้เอนโทรปีประมาณ 126 บิตด้วยชุดตัวอักษรมาตรฐาน
- กำหนดค่าการตั้งค่าทางเลือก: เพิ่มคำนำหน้าสำหรับ ID ที่มีเนมสเปซ (เช่น "usr_", "doc_") และเลือกจำนวน (1-50)
- สร้างและคัดลอก: คลิก "สร้าง NanoID" เพื่อสร้าง ID ของคุณ ใช้การคัดลอกในคลิกเดียวสำหรับแต่ละ ID หรือคัดลอกทั้งหมดในคราวเดียว
กรณีการใช้งานสำหรับ NanoID
คีย์หลักของฐานข้อมูล
NanoID เป็นคีย์หลักที่ยอดเยี่ยมสำหรับฐานข้อมูล มีความยาวสั้นกว่า UUID (21 เทียบกับ 36 ตัวอักษร) ช่วยประหยัดพื้นที่เก็บข้อมูลและลดขนาดดัชนี ใช้คำนำหน้าเช่น "usr_" หรือ "ord_" เพื่อให้ ID อธิบายตัวเองได้
ตัวระบุทรัพยากร API
NanoID ปลอดภัยสำหรับ URL โดยค่าเริ่มต้น ทำให้เหมาะสำหรับปลายทาง REST API: /api/users/V1StGXR8_Z5jdHi6B-myT ไม่ต้องเข้ารหัส URL และดูสะอาดตาในบันทึกและ URL
ตัวย่อ URL
NanoID ขนาด 10 ตัวอักษรที่มีชุดตัวอักษรเริ่มต้นให้ความเป็นไปได้ 64^10 = ~10^18 แบบ ซึ่งเพียงพอสำหรับตัวย่อ URL ใดๆ ชุดตัวอักษรแบบไม่มีตัวอักษรที่คล้ายกันมีประโยชน์อย่างยิ่งที่นี่ เนื่องจากผู้ใช้อาจต้องพิมพ์ URL แบบย่อด้วยตนเอง
โทเค็นเซสชันและโทเค็น CSRF
เนื่องจากเครื่องมือนี้ใช้การสุ่มระดับการเข้ารหัส ID ที่สร้างขึ้นจึงเหมาะสำหรับโทเค็นความปลอดภัย ใช้ความยาวที่มากขึ้น (32-64 ตัวอักษร) สำหรับแอปพลิเคชันด้านความปลอดภัยที่ละเอียดอ่อน
ระบบกระจายตัว
NanoID สามารถสร้างได้อย่างอิสระบนเซิร์ฟเวอร์หลายเครื่องโดยไม่ต้องมีการประสานงานกัน ไม่เหมือนกับตัวเลขจำนวนเต็มที่เพิ่มขึ้นอัตโนมัติ โอกาสในการเกิดการชนกันนั้นน้อยมากแม้ในมาตราส่วนขนาดใหญ่
การตั้งชื่อไฟล์
ใช้ค่าที่ตั้งไว้ล่วงหน้าแบบตัวอักษรและตัวเลขสำหรับชื่อไฟล์ที่ปลอดภัยในทุกระบบปฏิบัติการ การไม่มีตัวอักษรพิเศษหมายความว่าไม่มีปัญหาในการใช้เครื่องหมาย Escape ใน Windows, macOS หรือ Linux
การเลือกความยาวที่เหมาะสม
| ความยาว | เอนโทรปี (ชุดตัวอักษร 64 ตัว) | เหมาะสำหรับ | เกณฑ์โอกาสชนกัน 1% |
|---|---|---|---|
| 8 | 48 บิต | URL แบบสั้น, ชุดข้อมูลขนาดเล็ก | ~16 ล้าน ID |
| 12 | 72 บิต | วัตถุประสงค์ทั่วไป, ชุดข้อมูลขนาดกลาง | ~68 พันล้าน ID |
| 16 | 96 บิต | ระบบขนาดใหญ่, ปริมาณงานสูง | ~280 ล้านล้าน ID |
| 21 | 126 บิต | ค่าเริ่มต้น, แอปพลิเคชันส่วนใหญ่ | ~10^18 ID |
| 32 | 192 บิต | โทเค็นความปลอดภัย, ปลอดภัยเป็นพิเศษ | ~10^28 ID |
| 64 | 384 บิต | ความปลอดภัยสูงสุด | ~10^57 ID |
ตัวอย่างโค้ด
JavaScript (โดยใช้แพ็กเกจ nanoid)
// ค่าเริ่มต้น: 21 ตัวอักษร, ชุดตัวอักษรที่ปลอดภัยสำหรับ URL
const id = nanoid(); // "V1StGXR8_Z5jdHi6B-myT"
// ความยาวที่กำหนดเอง
const shortId = nanoid(10); // "IRFa-VaY2b"
// ชุดตัวอักษรที่กำหนดเอง
import { customAlphabet } from 'nanoid';
const hexId = customAlphabet('0123456789abcdef', 12);
Python (โดยใช้แพ็กเกจ nanoid)
# NanoID เริ่มต้น
id = generate() # "V1StGXR8_Z5jdHi6B-myT"
# ความยาวและชุดตัวอักษรที่กำหนดเอง
id = generate('0123456789abcdef', 12)
คำถามที่พบบ่อย
NanoID คืออะไรและแตกต่างจาก UUID อย่างไร?
NanoID เป็นตัวสร้างสตริง ID ที่ไม่ซ้ำกัน ขนาดเล็ก ปลอดภัย และเป็นมิตรกับ URL โดยปกติจะมีความยาว 21 ตัวอักษร (เทียบกับ 36 ตัวอักษรของ UUID) ใช้ชุดตัวอักษรที่ใหญ่กว่า (A-Za-z0-9_-) เพื่อเอนโทรปีที่มากขึ้นต่อตัวอักษร ปลอดภัยสำหรับ URL โดยไม่ต้องเข้ารหัส และไม่มีรูปแบบคงที่หรือเครื่องหมายยัติภังค์ NanoID ให้ความทนทานต่อการชนกันที่คล้ายกับ UUID v4 ในจำนวนตัวอักษรที่น้อยกว่า เพราะใช้สัญลักษณ์ 64 ตัวแทนที่จะเป็นตัวเลขฐานสิบหก 16 ตัว
NanoID ที่สร้างโดยเครื่องมือนี้ปลอดภัยเพียงใด?
เครื่องมือนี้ใช้โมดูล secrets ของ Python ซึ่งให้การสร้างตัวเลขสุ่มที่ปลอดภัยในระดับการเข้ารหัส โดยได้รับการสนับสนุนจากแหล่งเอนโทรปีของระบบปฏิบัติการ แต่ละตัวอักษรจะถูกเลือกอย่างเป็นอิสระและไม่สามารถคาดเดาได้ NanoID ขนาด 21 ตัวอักษรเริ่มต้นที่มีชุดตัวอักษรมาตรฐานมีเอนโทรปีประมาณ 126 บิต ซึ่งเทียบได้กับประมาณ 122 บิตของ UUID v4
ฉันควรใช้ความยาว NanoID เท่าใดสำหรับโปรเจกต์ของฉัน?
ความยาวเริ่มต้นที่ 21 ตัวอักษรให้เอนโทรปีประมาณ 126 บิตด้วยชุดตัวอักษรมาตรฐาน ซึ่งเพียงพอสำหรับแอปพลิเคชันส่วนใหญ่ สำหรับตัวย่อ URL หรือ ID ที่ผู้ใช้เห็น 8-12 ตัวอักษรอาจเพียงพอขึ้นอยู่กับจำนวน ID ทั้งหมดของคุณ สำหรับระบบกระจายตัวที่สร้าง ID เป็นล้านๆ ตัวอักษรขึ้นไป 21 ตัวอักษรขึ้นไปจะช่วยให้โอกาสในการเกิดการชนกันน้อยมาก ใช้เครื่องคำนวณโอกาสในการเกิดการชนกันเพื่อค้นหาความยาวที่เหมาะสมสำหรับกรณีการใช้งานเฉพาะของคุณ
ฉันสามารถใช้ NanoID เป็นคีย์หลักของฐานข้อมูลได้หรือไม่?
ได้ NanoID ทำงานได้ดีในฐานะคีย์หลักของฐานข้อมูล มีความกะทัดรัด (21 ตัวอักษรเทียบกับ 36 ของ UUID) ปลอดภัยสำหรับ URL และมีความทนทานต่อการชนกันที่ดีเยี่ยม อย่างไรก็ตาม ไม่เหมือนกับตัวเลขจำนวนเต็มที่เพิ่มขึ้นอัตโนมัติ มันไม่ได้เรียงลำดับ ดังนั้นหากฐานข้อมูลของคุณใช้ดัชนี B-tree การใช้ ID แบบสุ่มอาจทำให้เกิดการแยกหน้ามากขึ้น พิจารณาการใช้คำนำหน้า (เช่น "usr_" หรือ "ord_") เพื่อให้ ID อธิบายตัวเองได้
ชุดตัวอักษรที่ตั้งไว้ล่วงหน้า "ไม่มีตัวอักษรที่คล้ายกัน" คืออะไร?
ค่าที่ตั้งไว้ล่วงหน้า 'ไม่มีตัวอักษรที่คล้ายกัน' (No-Lookalike) จะลบตัวอักษรที่มีลักษณะคล้ายกันในหลายฟอนต์ออก: 1/l/I (เลขหนึ่ง, แอลพิมพ์เล็ก, ไอพิมพ์ใหญ่) และ 0/O/o (เลขศูนย์, โอพิมพ์ใหญ่, โอพิมพ์เล็ก) สิ่งนี้ทำให้ ID อ่าน บันทึก และสื่อสารด้วยวาจาได้ง่ายขึ้นมาก เหมาะอย่างยิ่งสำหรับ ID ที่ผู้ใช้เห็น เช่น รหัสเชิญ หมายเลขยืนยัน หรือ ID ใดๆ ที่มนุษย์ต้องพิมพ์ด้วยตนเอง
แหล่งข้อมูลเพิ่มเติม
อ้างอิงเนื้อหา หน้าหรือเครื่องมือนี้ว่า:
"ตัวสร้าง NanoID แบบสุ่ม" ที่ https://MiniWebtool.com/th// จาก MiniWebtool, https://MiniWebtool.com/
โดยทีม miniwebtool อัปเดตเมื่อ: 7 ก.พ. 2026