HomeĐời SốngTạo 1 số uuid như thế nào

Tạo 1 số uuid như thế nào

03:19, 07/04/2021

1. Đôi nét

UUID (Viết tắt của Universally Unique Identifier), còn được gọi là GUID (Globally Unique Identifier) là 1 quý giá độc nhất dài 128 bit. Một chuỗi UUID chuẩn thực hiện chữ số hex (octet):

0710a5ca-f57e-11e9-802a-5aa538984bd8

*
Mục đích của UUID xuất hiện là bởi vì vì:

Dữ liệu bự, mẫu mã khóa chính tự động imcrement yêu cầu các byte nhằm giữ hơn. Và khóa bao gồm phong cách này không tương xứng lúc nhưng mà hệ thống có rất nhiều hệ thống, nhiều client cùng lúc truy cập bên trên toàn trái đất.

Bạn đang xem: Tạo 1 số uuid như thế nào

bởi vậy UUID thành lập và hoạt động nhằm hạn chế và khắc phục đều lỗi bên trên. Vậy nếu khách hàng vừa sức xuất bản một khối hệ thống với tương đối nhiều VPS, phục vụ mặt hàng tỉ tỉ user hoặc chỉ dễ dàng là không thích để lộ id ra ngoài, hãy nghĩ cho tới UUID.

Trong bài này, họ vẫn cùng khám phá về UUID trong Java, trải qua class UUID.

2. Cấu trúc chuỗi UUID

Chúng ta thuộc coi ví dụ về chuỗi UUID:

123e4567-e89b-42d3-a456-556642440000xxxxxxxx-xxxx-Bxxx-Axxx-xxxxxxxxxxxxA đại diện thay mặt đến trở nên thể (variant) xác minh bố cục tổng quan (layout) của UUID. Tất cả những bit không giống vào UUID phụ thuộc vào vào setting của các bit trong trường trở thành thể (variant field). Biến thể được xác minh vì chưng 3 bit quan trọng đặc biệt tuyệt nhất của A:

MSB1 MSB2 MSB3 0 X X reserved (0) 1 0 X current variant (2) 1 1 0 reserved for Microsoft (6) 1 1 1 reserved for future (7)Giá trị của A trong UUID là "a ". Tương đương nhị phân của "a" (=10xx) hiển thị đổi mới thể là 2.B đại diện đến phiên bạn dạng (version). Phiên bạn dạng trong UUID (giá trị của B) là 4.

Java cung cấp các cách tiến hành để đưa ra variant (biến thể) và version (phiên bản) của UUID nhỏng sau:

UUID uuid = UUID.randomUUID();int variant = uuid.variant();int version = uuid.version();Đây là 5 phiên bản khác biệt mang lại UUID trở thành thể 2: Time Based (UUIDv1), DCE Security (UUIDv2), Name Based (UUIDv3 với UUIDv5), Random (UUIDv4).

Xem thêm: Download Game Phá Sao 3 - Game Phá Sao 3: Trò Chơi Elimination Stars

Java có cung cấp một implementation mang lại v3 cùng v4, tuy thế cũng cung ứng một constructor để giúp đỡ người dùng sinh sản ngẫu nhiên một số loại UUID nào:

UUID uuid = new UUID(long mostSigBits, long leastSigBits);

Version 3 & 5

Các UUID được chế tạo ra bằng phương pháp sử dụng hàm băm của namespace với name. Các định danh namespace là những UUID y hệt như Domain Name System (DNS), Object Identifiers (OIDs), URLs,...

UUID = hash(NAMESPACE_IDENTIFIER + NAME)Sự biệt lập tuyệt nhất giữa UUIDv3 và UUIDv5 là Thuật toán băm (Hashing Algorithm) - v3 áp dụng MD5 (128 bit) trong những lúc v5 sử dụng SHA-1 (160 bit).Nói một bí quyết dễ dàng và đơn giản, chúng ta cắt giảm kết quả băm thành 128 bit cùng tiếp nối thay thế 4 bit cho version (phiên bản) với 2 bit cho variant (trở thành thể).

Và đấy là cách chế tạo ra UUID một số loại 3 vào java:

String source = namespace + name;byte<> bytes = source.getBytes("UTF-8");UUID uuid = UUID.nameUUIDFromBytes(bytes);Java ko hỗ trợ implementation đến UUID loại 5.

Version 4

Implementation của UUID v4 trong Java sử dụng các số ngẫu nhiên. Class được java implement là SecureRandom. Nó sử dụng một cực hiếm quan trọng đân oán trước để tạo thành các số tự nhiên nhằm mục tiêu sút Phần Trăm trùng.Để sinc chuỗi UUID v4, bạn sử dụng:

UUID uuid = UUID.randomUUID();quý khách hàng hoàn toàn có thể sinch quality key sử dụng ‘SHA-256" với UUID nlỗi sau:

MessageDigest salternative text = MessageDigest.getInstance("SHA-256");salt.update(UUID.randomUUID().toString().getBytes("UTF-8"));String digest = bytesToHex(salternative text.digest());

3. Kết luận

Cả UUIDv3 và UUIDv5 đều phải có hồ hết điểm xuất sắc mà những khối hệ thống không giống nhau rất có thể tạo ra cùng một UUID bằng phương pháp sử dụng cùng một namespace cùng name. Chúng cơ phiên bản được sử dụng để tạo nên UUID phân cung cấp.

Vì cả nhì hàm băm MD5 và SHA1 đông đảo bị lỗi, bắt buộc tốt nhất có thể kthị trấn chúng ta thực hiện v5. Nếu chúng ta chỉ cần sinh sản UUID dễ dàng và đơn giản, nhiều loại 4 có thể đáp ứng tốt đến vận dụng của doanh nghiệp.