3 个版本
0.2.5 | 2023 年 3 月 14 日 |
---|---|
0.2.4 | 2022 年 3 月 25 日 |
0.2.3 | 2022 年 1 月 3 日 |
#11 在 #tink
119 每月下载量
用于 rinkey
310KB
5K SLoC
Tink-Rust:混合加密
本包提供了混合加密功能,详细说明见上游 Tink 文档。
使用方法
fn main() -> Result<(), Box<dyn Error>> {
tink_hybrid::init();
let kh_priv = tink_core::keyset::Handle::new(
&tink_hybrid::ecies_hkdf_aes128_ctr_hmac_sha256_key_template(),
)?;
// NOTE: save the private keyset to a safe location. DO NOT hardcode it in source code.
// Consider encrypting it with a remote key in Cloud KMS, AWS KMS or HashiCorp Vault. See
// https://github.com/google/tink/blob/master/docs/GOLANG-HOWTO.md#storing-and-loading-existing-keysets.
let kh_pub = kh_priv.public()?;
// NOTE: share the public keyset with the sender.
let enc = tink_hybrid::new_encrypt(&kh_pub)?;
let msg = b"this data needs to be encrypted";
let encryption_context = b"encryption context";
let ct = enc.encrypt(msg, encryption_context)?;
let dec = tink_hybrid::new_decrypt(&kh_priv)?;
let pt = dec.decrypt(&ct, encryption_context)?;
assert_eq!(msg[..], pt);
println!("Ciphertext: {}\n", hex::encode(&ct));
println!("Original plaintext: {}\n", String::from_utf8_lossy(msg));
println!("Decrypted plaintext: {}\n", String::from_utf8_lossy(&pt));
Ok(())
}
许可证
免责声明
这不是 Google 的官方支持产品。
依赖项
~4.5–7MB
~128K SLoC