Sqids เป็นไลบรารีที่เล็กน้อยที่เปิดเผยและสามารถสร้าง ID ที่มีลักษณะเหมือนสุ่มและสั้นจากตัวเลขได้
วิธีที่ดีที่สุดในการคิดเกี่ยวกับมันคือเหมือนเครื่องแปลงทศนิยมเป็นฐานสิบหก แต่มีคุณลักษณะเพิ่มเติมบางอย่าง
การย่อลิงก์ สร้าง ID อย่างเป็นเอกลักษณ์สำหรับการเข้าสู่ระบบการเข้าถึง เพิ่ม ID สำหรับผลิตภัณฑ์/วัตถุบนเว็บไซต์ (เช่น YouTube ทำสำหรับวิดีโอ) สร้าง ID สั้นสำหรับข้อความในข้อความ รหัสยืนยันในอีเมล ฯลฯ
ข้อมูลที่ละเอียดอ่อน การสร้าง ID ไม่ใช่การทำ hash และสามารถถอดรหัสกลับเป็นตัวเลขได้ ตัวอย่างเช่น อาจจะไม่เป็นทางเลือกที่ดีสำหรับ ID ของผู้ใช้ เพราะเมื่อถอดรหัสแล้ว อาจเปิดเผยจำนวนผู้ใช้แอปของคุณ
ใช่ Sqids สามารถเข้ารหัสตัวเลขหนึ่งหรือหลายตัวเลขไม่เป็นติดกันเป็น ID เดียวได้ ไม่มีขีดจำกัดในจำนวนที่คุณสามารถเข้ารหัสได้ แต่มีขีดจำกัดในจำนวนที่คุณสามารถเข้ารหัสได้ (ขึ้นอยู่กับภาษาการดำเนินงาน)
นี่เป็นประโยชน์หลายประการ: คุณสามารถเข้ารหัสเวลา UNIX และสร้าง ID ที่หมดอายุ หรือคุณสามารถเข้ารหัสหมายเลขชาร์ดฐานข้อมูลพร้อมกับกุญแจหลักและประหยัดในการค้นซอร์สฐานข้อมูลเพิ่มเติม
ใช่ ID ที่สร้างมีความเป็นเอกลักษณ์ต่อข้อมูลนำเข้าและอักษรตัวอักษร
อย่าลืมว่าอักษรตัวเล็กและตัวพิมพ์ใหญ่อยู่ในอักษรเริ่มต้น ดังนั้น ID เริ่มต้นเป็นตัวอักษรที่สำคัญ
Sqids ไม่สามารถเข้ารหัสตัวเลขที่เป็นลบ
ความยาวขั้นต่ำของตัวอักษรอักษรมี 3 ตัวอักษร
อักษรตัวอักษรไม่สามารถมีอักขระหลายไบต์ได้
Sqids ไม่สามารถสร้าง ID ได้ในความยาวบางอย่าง แต่ต้องอย่างน้อยความยาวหนึ่งความยาวพารามิเตอร์ขั้นต่ำอยู่ระหว่าง 0 และ 255
Sqids สามารถพยายามทำการสร้าง ID ใหม่ได้ สูงสุดความยาวของตัวอักษรลบหนึ่ง
ไลบรารียอมรับอักษรตัวอักษรที่กำหนดเองที่สามารถสร้าง ID ได้ แค่การสับเปลี่ยนตัวอักษรเริ่มต้นที่ให้มา
โปรดทราบว่าด้วยความพยายามเพียงพอ ใครบางคนอาจถอดรหัสตัวอักษรที่คุณสับเปลี่ยนได้ ดังนั้นนี่ไม่ใช่เทคนิคที่จะซ่อนข้อมูลที่ละเอียดอ่อน
ตัวอักษรเริ่มต้นสามารถพบได้ ที่นี่
คุณสามารถใช้เครื่องมือการสับเปลี่ยนสตริงออนไลน์ใดๆหรือ playground ของเรา
ขึ้นอยู่กับกรณีการใช้งานของคุณ อักษรตัวอักษรที่สั้นจะทำให้ ID ยาวขึ้น และอักษรตัวอักษรที่ยาวจะทำให้ ID สั้นลง คุณสามารถใช้ playground เพื่อทดสอบว่า ID ของคุณอาจจะมีลักษณะอย่างไร
ใช่ โปรดทราบว่า ID ที่สร้างขึ้นยังคงเป็นสตริงและอาจเริ่มต้นด้วยศูนย์
ไม่ Sqids ไม่รองรับอักขระหลายไบต์สำหรับตัวอักษร ซึ่งรวมถึง emoji และอักขระอื่นๆมากมาย
ไลบรารีสามารถเพิ่ม ID ด้วยตัวอักษรขยะเพื่อทำให้ดูยาวขึ้น สิ่งนี้เป็นประโยชน์โดยที่มันจะไม่ชัดเจนว่าคุณกำลังเข้ารหัสจำนวนเล็กเช่น 1 หรือจำนวนใหญ่เช่น 1000000
การถอดรหัสไม่ได้รับผลกระทบ
ใช่ ไลบรารีรับพารามิเตอร์ความยาวขั้นต่ำซึ่งสรรพคุณให้ ID จะมีความยาวอย่างน้อย
โปรดทราบว่าไม่มีการรับประกันความยาวของ ID ของคุณ - แค่ว่ามันจะไม่สั้นกว่าความยาวที่คุณระบุ
จนถึงจุดหนึ่ง
การตั้งค่าความยาวสูงสุดเป็นเรื่องที่เป็นไปไม่ได้เพราะในไม่ช้า IDs ของคุณจะเกินเมื่อมีข้อมูลเพียงพอมากนัก นั่นคือเหตุผลที่มีเพียงพารามิเตอร์ความยาวขั้นต่ำเท่านั้นที่รองรับ และความยาวที่แน่นอนหรือความยาวสูงสุดไม่ได้รับการสนับสนุน
บล็อกลิสต์สามารถป้องกันคำบางคำไม่ให้ปรากฏใน ID ของคุณ สิ่งนี้มีประโยชน์เพราะ ID ที่สร้างขึ้นมีไว้ให้แสดงในสถานที่สาธารณะ เช่น URL
Sqids มาพร้อมกับ บล็อกลิสต์เริ่มต้น ที่มีคำหยาบและคำที่ไม่เหมาะสมที่สุดจากหลายภาษา คุณสามารถขยายบล็อกลิสต์นั้นด้วยคำของคุณเองได้
การตรวจสอบคำในบล็อกลิสต์ไม่สนใจตัวพิมพ์ใหญ่หรือตัวพิมพ์เล็ก
คำที่สั้นกว่า 3 ตัวอักษรจะไม่ถูกบล็อก คำที่มีความยาว 3 ตัวอักษรจะต้องตรงกับ ID อย่างแม่นยำ และคำที่มีความยาว 4 ตัวอักษรหรือมากกว่าจะทำให้มีการตรงกันถ้าเป็นสตริงย่อยของ ID
หากคำในบล็อกลิสต์มีตัวเลข (leetspeak) จะทำให้เกิดการตรงกันเฉพาะเมื่ออยู่ที่จุดเริ่มต้นหรือที่สุดของ ID
บล็อกลิสต์เริ่มต้นประกอบด้วยคำหยาบและคำที่ไม่เหมาะสมที่สุดจากหลายภาษา คุณสามารถดูรายการทั้งหมด ที่นี่
เมื่อ ID ที่สร้างขึ้นตรงกับคำในบล็อกลิสต์ ไลบรารีจะพยายามทำการสร้างใหม่
หากทุกครั้งที่พยายามทำการสร้างใหม่ ID ล้มเหลว ฟังก์ชันการเข้ารหัสจะล้มเหลวและส่งข้อผิดพลาดกลับ การจัดการข้อผิดพลาดนั้นอยู่ในความรับผิดชอบของผู้ใช้
วิธีที่ดีที่สุดในการลดจำนวนครั้งที่ทำการสร้างใหม่คือ การมีอักษรที่ยาวกว่า ไม่ตั้งค่าความยาวขั้นต่ำ และการให้บล็อกลิสต์ที่เล็กกว่า การให้บล็อกลิสต์ว่างเปล่าจะปิดใช้งานคุณลักษณะนี้อย่างสมบูรณ์
การถอดรหัส ID จะทำให้มีผลลัพธ์ตัวเลขบางประเภท แต่นั้นไม่ได้หมายความว่า ID เป็นแบบกฎหมาย หากต้องการตรวจสอบว่า ID เป็นที่ถูกต้อง คุณสามารถทำการเข้ารหัสตัวเลขที่ถอดรหัสและตรวจสอบว่า ID ตรงกันหรือไม่
เหตุผลที่ไม่ทำการนี้อัตโนมัติคือถ้าบล็อกลิสต์เริ่มต้นเปลี่ยนไปในอนาคตเราไม่ต้องการที่จะทำให้ ID ที่ถูกสร้างไว้ในอดีตเป็นโมฆะโดยอัตโนมัติและอาจตรงกันกับคำในบล็อกลิสต์เริ่มต้นใหม่
เราจะอัปเดต CHANGELOG เมื่อและหากบล็อกลิสต์เริ่มต้นมีการเปลี่ยนแปลง
คุณต้องคำนึงถึงสถานการณ์ที่คำใหม่อาจถูกนำเข้าไปในบล็อกลิสต์เริ่มต้น ในกรณีนี้การทำการเข้ารหัสตัวเลขอาจทำให้ได้ ID ที่แตกต่างกัน
วิธีที่ดีที่สุดในการให้แน่ใจว่า ID ของคุณยังคงเหมือนเดิมตลอดการอัปเดตในอนาคตคือการให้บล็อกลิสต์ที่กำหนดเอง แม้ว่าจะเหมือนกับบล็อกลิสต์เริ่มต้นปัจจุบัน
ไม่ การเข้ารหัสตัวเลขที่แตกต่างกันจะสร้าง ID ที่ไม่ซ้ำกัน
อย่างไรก็ตาม เนื่องจากการออกแบบของอัลกอริทึมการถอดรหัส ID สุ่มอาจสร้างตัวเลขเดียวกันได้บางครั้ง วิธีที่ดีที่สุดในการตรวจสอบว่า ID เป็นแบบกฎหมายคือที่จะทำการเข้ารหัสตัวเลขที่ถอดรหัสและตรวจสอบว่า ID ตรงกันหรือไม่
Hashids เป็นรุ่นแรกของไลบรารีนี้ที่ปรากฏในปี 2013 นอกจากนี้ยังสร้าง ID สั้นๆ แต่ใช้วิธีที่ไม่ใช่เดียวกับนี้เล็กน้อย
Hashids จัดการกับสิ่งที่ไม่ซ้ำกันอย่างไม่เหมือนกัน
มันไม่รองรับบล็อกลิสต์ที่กำหนดเองแต่ใช้คำหยาบที่มักจะพบบ่อยในภาษาอังกฤษ นอกจากนี้ยังใช้พารามิเตอร์ salt เพื่อการสับเบิลอักษรซึ่งทำให้เกิดความสับสนเล็กน้อยเพราะไลบรารีนี้ไม่มีความเกี่ยวข้องกับการเข้ารหัส อีกทั้งยังใช้ตัวอักษรที่สงวนไว้มากมายทำให้ได้ IDs ที่ยาวขึ้น
ด้วยเหตุผลนี้เราตัดสินใจที่จะอัปเกรดและเปลี่ยนชื่อ เราได้ทำการปรับปรุงอัลกอริทึมให้เรียบง่ายลง เพิ่มคุณสมบัติบางอย่างและเก็บรวบรวมรหัสทั้งหมดไว้ภายใต้ ที่เดียวกันนี้
พารามิเตอร์ salt ถูกใช้สำหรับการสับเบิลอักษร และไม่เคยมีความหมายที่เกี่ยวข้องกับความปลอดภัย ทั้ง Hashids และ Sqids ทำงานอย่างเดียวกันกับการแปลงเลขฐานสิบเข้าเลขฐานสิบหก แต่มีการปรับปรุงบางอย่าง ไม่มีการเข้ารหัสใดๆ เพื่อหลีกเลี่ยงความสับสน พารามิเตอร์นี้ได้ถูกลบออกโดยสมบูรณ์
ไม่ Sqids ขยายความสามารถของ Hashids และมีวัตถุประสงค์และความต้องการในการออกแบบที่แตกต่างกัน ดังนั้น IDs ที่สร้างขึ้นไม่สามารถที่จะใช้งานร่วมกับ Hashids ได้
เนื่องจากไม่มีความเข้ากันได้ระหว่าง Hashids และ Sqids การแทนที่ Hashids ด้วย Sqids เป็นเรื่องที่เป็นไปไม่ได้
อย่างไรก็ตามคุณสามารถรวมการใช้งานร่วมกันโดยการแยกแยะว่า ID ใดเป็นของไลบรารีไหน
วิธีหนึ่งในการทำเช่นนั้นคือด้วยความยาวของ ID - หากคุณกำลังเปลี่ยนไปใช้ Sqids คุณสามารถให้ความยาวขั้นต่ำสูงกว่าได้ อีกวิธีหนึ่งคือการเพิ่มตัวอักษรที่กำหนดเองไปยัง ID ที่สร้างขึ้นใหม่เอง
สุดท้ายนี้คุณยังสามารถพยายามที่จะถอดรหัส ID ด้วย Hashids เพื่อดูว่ามันเป็น ID ที่ถูกต้องหรือไม่ หากไม่ถูกต้อง - ถอดรหัสและเข้ารหัสใหม่ด้วย Sqids เพื่อดูว่ามันทำงานหรือไม่
การสร้างภาษาแต่ละภาษาบนเว็บไซต์นี้ลิงก์ไปยังที่เก็บรวบรวมของ Hashids ด้วยถ้ามีอยู่
หากคุณต้องการสนับสนุนโปรเจคเราขอแสดงความนับถือในการเพิ่มดาวให้กับเราบน Github เพื่อให้มีความมองเห็นมากขึ้น
หากคุณเป็นนักพัฒนาและไม่พบการประมวลแหล่งข้อมูล Sqids สำหรับภาษาเฉพาะใดๆ โปรดช่วยเราในการแปลงไลบรารี และเช่นเดียวกันสำหรับภาษาที่ไม่ได้รับการระบุ
หากคุณพบข้อบกพร่องในข้อกำหนดหรือทั้งหมดในการประมวล โปรดสร้างปัญหาหรือคำขอดึงด้วยการแนะนำการแก้ไขที่เหมาะสมในเกณฑ์ในที่เก็บรวบรวมข้อมูลที่เหมาะสม
หากคุณพูดหลายภาษาเราต้องการความช่วยเหลือจากคุณในการ ปรับปรุงบล็อกลิสต์ และ ปรับการแปลเว็บไซต์ หากคุณพบปัญหาใดๆ
สุดท้ายหากคุณมีประสบการณ์บางอย่างกับ Hashids/Sqids โปรดช่วยเสริมแรงชุมชนของเราด้วยการตอบคำถามของใครสักคน
หากคุณต้องการที่จะพอร์ต Sqids ไปยังหนึ่งในภาษาต่อไปนี้ (หรือภาษาใหม่ที่ยังไม่ได้รับการระบุที่นี่):
D , Io , Raku , Smalltalk , T-SQL , Tcl , VBA
โคลนเก็บรวบรวมอย่างเป็นทางการไปยังบัญชี Github ของคุณเองและปรับใช้ ข้อกำหนดการใช้งาน พร้อมกับการทดสอบทั้งหมด คุณสามารถใช้ READMEs ที่มีอยู่แล้วได้ (ตัวอย่าง )
เมื่อไลบรารีพร้อมใช้งาน สร้างคำขอดึงด้วยการถอดรหัสเสร็จเรียบร้อยแล้วเราจะอัปเดตเว็บไซต์
หากเก็บรวบรวมไม่มีผู้ดูแลแล้วเรายินดีที่จะเชิญคุณมาดูแลเก็บรวบรวมและเป็นผู้ดูแลที่เป็นทางการ