cloud_disk_sync/utils/
crypto.rs1pub fn generate_recovery_code(key: &[u8]) -> String {
2 use sha2::{Digest, Sha256};
3
4 let mut hasher = Sha256::new();
6 hasher.update(key);
7 let hash = hasher.finalize();
8
9 let wordlist = vec![
11 "alpha", "bravo", "charlie", "delta", "echo", "foxtrot", "golf", "hotel", "india",
12 "juliet", "kilo", "lima", "mike", "november", "oscar", "papa", "quebec", "romeo", "sierra",
13 "tango", "uniform", "victor", "whiskey", "xray", "yankee", "zulu", "zero", "one", "two",
14 "three", "four", "five", "six", "seven", "eight", "nine",
15 ];
16
17 let mut words = Vec::new();
18 for chunk in hash.chunks(2) {
19 let index = ((chunk[0] as usize) << 8 | chunk[1] as usize) % wordlist.len();
20 words.push(wordlist[index]);
21 }
22
23 words[..8].join("-")
25}