Crates.io | simple-secrets |
lib.rs | simple-secrets |
version | 0.1.1 |
source | src |
created_at | 2019-01-22 23:36:00.974352 |
updated_at | 2019-01-27 04:16:04.318656 |
description | A simple, opinionated library for encrypting small packets of data securely. |
homepage | |
repository | https://github.com/timshadel/simple-secrets.rs |
max_upload_size | |
id | 110098 |
size | 42,406 |
The Rust implementation of a simple, opinionated library for encrypting small packets of data securely. Designed for exchanging tokens among systems written in a variety of programming languages: Node.js, Ruby, Rust, Objective-C, Java, Erlang.
Send:
use simple_secrets::Packet;
// Try `head /dev/urandom | shasum -a 256` to make a decent 256-bit key
let sender = Packet::new("<64-char hex string master key (32 bytes, 256 bits)>".to_string());
let packet = sender.pack("this is a secret message").unwrap();
// => 'Qr4m7AughkcQIRqQvlyXiB67EwHdBf5n9JD2s_Z9NpO4ksPGvLYjNbDm3HRzvFXFSpV2IqDQw_LTamndMh2c7iOQT0lSp4LstqJPAtoQklU5sb7JHYyTOuf-6W-q7W8gAnq1wCs5'
// Initialize from any [u8; 32] if your key is already in bytes
let sender = Packet::from([0x9f; 32]);
Receive:
use simple_secrets::Packet;
// Same shared key
let sender = Packet::new("<64-char hex string master key (32 bytes, 256 bits)>".to_string());
// Read data from somewhere
let packet = "OqlG6KVMeyFYmunboS3HIXkvN_nXKTxg2yNkQydZOhvJrZvmfov54hUmkkiZCnlhzyrlwOJkbV7XnPPbqvdzZ6TsFOO5YdmxjxRksZmeIhbhLaMiDbfsOuSY1dBn_ZgtYCw-FRIM".to_string();
let secret_message = sender.unpack(packet)?;
// => { "msg" => "this is a secret message" }
This implementation follows simple-secrets for 100% compatibility.
Licensed under either of
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.