commit
f216287aee
@ -103,15 +103,16 @@ pub fn encrypt_str_or_original(s: &str, version: &str, max_len: usize) -> String
|
|||||||
// String: password
|
// String: password
|
||||||
// bool: whether decryption is successful
|
// bool: whether decryption is successful
|
||||||
// bool: whether should store to re-encrypt when load
|
// bool: whether should store to re-encrypt when load
|
||||||
|
// note: s.len() return length in bytes, s.chars().count() return char count
|
||||||
|
// &[..2] return the left 2 bytes, s.chars().take(2) return the left 2 chars
|
||||||
pub fn decrypt_str_or_original(s: &str, current_version: &str) -> (String, bool, bool) {
|
pub fn decrypt_str_or_original(s: &str, current_version: &str) -> (String, bool, bool) {
|
||||||
if s.len() > VERSION_LEN {
|
if s.len() > VERSION_LEN {
|
||||||
let version = &s[..VERSION_LEN];
|
if s.starts_with("00") {
|
||||||
if version == "00" {
|
|
||||||
if let Ok(v) = decrypt(s[VERSION_LEN..].as_bytes()) {
|
if let Ok(v) = decrypt(s[VERSION_LEN..].as_bytes()) {
|
||||||
return (
|
return (
|
||||||
String::from_utf8_lossy(&v).to_string(),
|
String::from_utf8_lossy(&v).to_string(),
|
||||||
true,
|
true,
|
||||||
version != current_version,
|
"00" != current_version,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -198,7 +199,7 @@ mod test {
|
|||||||
let max_len = 128;
|
let max_len = 128;
|
||||||
|
|
||||||
println!("test str");
|
println!("test str");
|
||||||
let data = "Hello World";
|
let data = "1ü1111";
|
||||||
let encrypted = encrypt_str_or_original(data, version, max_len);
|
let encrypted = encrypt_str_or_original(data, version, max_len);
|
||||||
let (decrypted, succ, store) = decrypt_str_or_original(&encrypted, version);
|
let (decrypted, succ, store) = decrypt_str_or_original(&encrypted, version);
|
||||||
println!("data: {data}");
|
println!("data: {data}");
|
||||||
@ -217,7 +218,7 @@ mod test {
|
|||||||
);
|
);
|
||||||
|
|
||||||
println!("test vec");
|
println!("test vec");
|
||||||
let data: Vec<u8> = vec![1, 2, 3, 4, 5, 6];
|
let data: Vec<u8> = "1ü1111".as_bytes().to_vec();
|
||||||
let encrypted = encrypt_vec_or_original(&data, version, max_len);
|
let encrypted = encrypt_vec_or_original(&data, version, max_len);
|
||||||
let (decrypted, succ, store) = decrypt_vec_or_original(&encrypted, version);
|
let (decrypted, succ, store) = decrypt_vec_or_original(&encrypted, version);
|
||||||
println!("data: {data:?}");
|
println!("data: {data:?}");
|
||||||
@ -253,6 +254,10 @@ mod test {
|
|||||||
let (_, succ, store) = decrypt_vec_or_original(&[], version);
|
let (_, succ, store) = decrypt_vec_or_original(&[], version);
|
||||||
assert!(!store);
|
assert!(!store);
|
||||||
assert!(!succ);
|
assert!(!succ);
|
||||||
|
let data = "1ü1111";
|
||||||
|
assert_eq!(decrypt_str_or_original(data, version).0, data);
|
||||||
|
let data: Vec<u8> = "1ü1111".as_bytes().to_vec();
|
||||||
|
assert_eq!(decrypt_vec_or_original(&data, version).0, data);
|
||||||
|
|
||||||
println!("test speed");
|
println!("test speed");
|
||||||
let test_speed = |len: usize, name: &str| {
|
let test_speed = |len: usize, name: &str| {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user