7个版本

0.3.0 2019年9月30日
0.2.2 2019年9月1日
0.2.1 2019年8月30日
0.1.2 2019年8月23日

#1476 in 密码学

MIT许可证

23KB
456

TravisCI Crates.io Docs

Salsa20流密码

Salsa20是一种基于加-旋转-异或操作的伪随机函数构建的流密码——32位加法、位加法和旋转操作。

用法

要安装rust-salsa20,请将以下内容添加到您的Cargo.toml

[dependencies]
rust-salsa20 = "^0.2"

示例

生成

extern crate rust_salsa20;
use rust_salsa20::{Salsa20, Key::Key32};

fn main() {
    let key = Key32([
        0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
        17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31
    ]);
    let nonce = [1, 2, 3, 4, 5, 6, 7, 8];
    let mut salsa = Salsa20::new(key, nonce, 0);
    let mut buffer = [0; 10];
    salsa.generate(&mut buffer);

    assert_eq!(buffer, [45, 134, 38, 166, 142, 36, 28, 146, 116, 157]);
}

加密

extern crate rust_salsa20;
use rust_salsa20::{Salsa20, Key::Key32};

fn main() {
    let key = Key32([
        0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
        17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31
    ]);
    let nonce = [1, 2, 3, 4, 5, 6, 7, 8];
    let mut salsa = Salsa20::new(key, nonce, 0);
    let mut buffer = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0];
    salsa.encrypt(&mut buffer);

    assert_eq!(buffer, [44, 132, 37, 162, 139, 34, 27, 154, 125, 157]);
}

贡献者

请参阅github上的完整贡献者列表

无运行时依赖