Uuid.nameUuidFromBytes constructor
Generates a name-based UUID using SHA-1 hashing (version 5).
Parameters:
namespace
: Namespace UUID for the namenameBytes
: Byte representation of the name
Returns:
- A deterministic UUID based on the namespace and name
Deterministic Properties
- Same namespace and name always produce the same UUID
- Different names in the same namespace produce different UUIDs
- Uses SHA-1 hashing for cryptographic strength
- Suitable for creating reproducible UUIDs from names
Example
final namespace = Uuid.NAMESPACE_DNS;
final name = utf8.encode('example.com');
final uuid1 = Uuid.nameUuidFromBytes(namespace, name);
final uuid2 = Uuid.nameUuidFromBytes(namespace, name);
print(uuid1 == uuid2); // true (deterministic)
print(uuid1.version); // 5
Implementation
factory Uuid.nameUuidFromBytes(Uuid namespace, List<int> nameBytes) {
// Combine namespace UUID bytes with name bytes
final namespaceBytes = namespace._toBytes();
final combined = <int>[];
combined.addAll(namespaceBytes);
combined.addAll(nameBytes);
// Generate SHA-1 hash
final hash = _sha1Hash(combined);
// Set version (5) and variant (2) bits
hash[6] = (hash[6] & 0x0F) | 0x50; // Version 5
hash[8] = (hash[8] & 0x3F) | 0x80; // Variant 2
return Uuid._fromBytes(hash.take(16).toList());
}