#keccak #crypto #hash

keccakrs

在Rust中实现Keccak的详细、易读版本

7个版本

使用旧的Rust 2015

0.1.6 2017年10月17日
0.1.5 2017年10月13日

#26 in #keccak


用于 keccakrs-wasm

MPL-2.0 许可证

175KB
269

包含 (rust库, 165KB) libkeccakrs.rlib

添加到Cargo.toml

[dependencies]
keccakrs = "*"

在您的代码中,使用如下

extern crate keccakrs;
use keccakrs::*;

fn main() {
  let mut keccak = keccakrs::Keccak::new(1088usize, 512usize);
  /* Other options include:
  *  keccak = keccakrs::new_keccak1600_224();
  *  keccak = keccakrs::new_keccak1600_256();
  *  keccak = keccakrs::new_keccak1600_384();
  *  keccak = keccakrs::new_keccak1600_512();
  */

  let input = &mut String::from("Hello World");
  
  keccak.injest(input);

  let output: Vec<u8> = keccak.hash();
  let state: Vec<u64> = keccak.get_internal_state();
}

此包正在开发中。使用风险自负。

此代码库的主要目标是提供一个易于阅读和理解Keccak的实现。

(这不是Keccak的特别快速实现,但它不使用任何不安全代码)

test perf_k_256_empty_input ... bench:       2,603 ns/iter (+/- 463)
test perf_k_256_long_input  ... bench:       6,348 ns/iter (+/- 2,624)
test perf_k_512_empty_input ... bench:       2,560 ns/iter (+/- 442)
test perf_k_512_long_input  ... bench:       8,917 ns/iter (+/- 1,638)

依赖项