azalea_crypto/
offline.rs

1//! Offline-mode UUID generation.
2
3use md5::{Digest, Md5};
4use uuid::Uuid;
5
6/// Return what the offline-mode UUIDv3 for the given username would be.
7pub fn generate_uuid(username: &str) -> Uuid {
8    uuid::Builder::from_md5_bytes(hash(format!("OfflinePlayer:{username}").as_bytes())).into_uuid()
9}
10
11fn hash(data: &[u8]) -> [u8; 16] {
12    let mut hasher = Md5::new();
13
14    hasher.update(data);
15
16    let mut bytes = [0; 16];
17    bytes.copy_from_slice(&hasher.finalize()[..16]);
18
19    bytes
20}