Build Android (FCM) / build-android-fcm (push) Canceled after 0s
Build Android / build-android (push) Canceled after 0s
Build iOS / build-ios (push) Canceled after 0s
Build Linux / build-linux (push) Canceled after 0s
Build macOS / build-macos (push) Canceled after 0s
Build Windows / build-windows (push) Canceled after 0s
Release (main) / android (oneme) (push) Canceled after 0s
Release (main) / android (qlyra) (push) Canceled after 0s
Release (main) / windows (push) Canceled after 0s
Release (main) / linux (push) Canceled after 0s
Release (main) / macos (push) Canceled after 0s
Release (main) / ios (push) Canceled after 0s
Release (main) / release (push) Canceled after 0s
36 lines
1.2 KiB
Rust
36 lines
1.2 KiB
Rust
use std::time::Instant;
|
|
|
|
use qlyra_crypto::cipher;
|
|
|
|
fn main() {
|
|
let password = "мой ключ 2026";
|
|
let started = Instant::now();
|
|
let key = cipher::derive_key(password).expect("derive");
|
|
println!("derive_key: {:?}", started.elapsed());
|
|
|
|
for text in [
|
|
"привет",
|
|
"встречаемся в 19:00 у метро",
|
|
"Hello! Это смешанный текст с эмодзи 🔐",
|
|
] {
|
|
let encrypted = cipher::encrypt(text, &key).expect("encrypt");
|
|
let decrypted = cipher::decrypt(&encrypted, &key).expect("decrypt");
|
|
println!(
|
|
"\n{} символов -> {} символов",
|
|
text.chars().count(),
|
|
encrypted.chars().count()
|
|
);
|
|
println!(" {text}");
|
|
println!(" {encrypted}");
|
|
assert_eq!(decrypted, text);
|
|
}
|
|
|
|
let wrong = cipher::derive_key("не тот ключ").expect("derive");
|
|
let sample = cipher::encrypt("секрет", &key).expect("encrypt");
|
|
println!("\nчужой ключ: {:?}", cipher::decrypt(&sample, &wrong));
|
|
println!(
|
|
"обычный текст: {:?}",
|
|
cipher::decrypt("привет как дела", &key)
|
|
);
|
|
}
|