1 个不稳定版本
0.1.1 | 2019 年 1 月 27 日 |
---|---|
0.1.0 |
|
#10 in #encrypting
43KB
715 行
simple-secrets.rs
simple-secrets 的 Rust 实现,这是一个简单的、有偏见的库,用于安全地加密少量数据。设计用于在用各种编程语言编写的系统之间交换令牌:[Node.js](https://github.com/timshadel/simple-secrets)、[Ruby](https://github.com/timshadel/simple-secrets.rb)、[Rust](https://github.com/timshadel/simple-secrets.rs)、[Objective-C](https://github.com/timshadel/SimpleSecrets)、[Java](https://github.com/timshadel/simple-secrets.java)、[Erlang](https://github.com/CamShaft/simple_secrets.erl)。
示例
基本
发送
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]);
接收
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" }
你能添加 ...
此实现遵循 [simple-secrets](https://github.com/timshadel/simple-secrets) 以实现 100% 兼容性。
许可协议
许可协议为以下之一
- Apache 许可协议 2.0 ([LICENSE-APACHE](https://github.com/timshadel/simple-secrets.rs/blob/dad0201f4f44eae8318c23b04410f218a7649e1e/LICENSE-APACHE) 或 [https://apache.ac.cn/licenses/LICENSE-2.0](https://apache.ac.cn/licenses/LICENSE-2.0))
- MIT 许可协议 ([LICENSE-MIT](https://github.com/timshadel/simple-secrets.rs/blob/dad0201f4f44eae8318c23b04410f218a7649e1e/LICENSE-MIT) 或 [http://opensource.org/licenses/MIT](http://opensource.org/licenses/MIT))
任选其一。
贡献
除非你明确声明,否则根据 Apache-2.0 许可协议定义的,你有意提交的任何贡献,均应作为上述双重许可发布,无需附加任何额外条款或条件。
依赖项
~5MB
~73K SLoC