File size: 781 Bytes
a21c316 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | // [NEW v4.1.24] Tools for deriving stable session identifiers
/// From account ID string to a stable negative signed integer session ID
/// Implements FNV-1a hash which matches the official client behavior of sending
/// a large negative integer for `sessionId`.
pub fn derive_session_id(account_id: &str) -> String {
let mut hash: i64 = -3750763034362895579_i64; // FNV offset basis
for byte in account_id.bytes() {
hash = hash.wrapping_mul(1099511628211_i64);
hash ^= byte as i64;
}
hash.to_string()
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_derive_session_id() {
let x = derive_session_id("my_account@gmail.com");
let y = derive_session_id("my_account@gmail.com");
assert_eq!(x, y);
}
}
|