2个版本
0.1.1 | 2022年10月12日 |
---|---|
0.1.0 | 2022年5月23日 |
#1572 in 加密学
每月419次下载
用于 evm-coder
24KB
294 行
sha3-const
const fn
SHA-3系列哈希和可扩展输出函数的实现(灵感来自 sha2-const)。此crate允许您在Rust中将Sha3哈希函数用作常量表达式。对于所有其他用法,sha3 crate包含这些哈希函数的更多优化实现。
基于 Keccak规范实现。
lib.rs
:
const fn
SHA-3系列哈希和可扩展输出函数的实现。
此crate允许您在Rust中将SHA-3哈希和可扩展输出函数用作常量表达式。对于所有其他用法,sha3 crate包含这些哈希函数的更多优化实现。
示例
const PSEUDO_RANDOM_BYTES: [u8; 1000] = Shake256::new()
.update(b"The quick brown fox ")
.update(b"jumps over the lazy dog")
.finalize();
#![feature(const_mut_refs)]
const ROUND_CONSTANTS: [u128; 8] = {
let shake = Shake128::new()
.update(b"The quick brown fox ")
.update(b"jumps over the lazy dog");
let mut reader = shake.finalize_xof();
let mut output = [0; 8];
let mut i = 0;
while i < 8 {
let mut buf = [0; 16];
reader.read(&mut buf);
output[i] = u128::from_be_bytes(buf);
i += 1;
}
output
};
assert_eq!(
[
324498722242859095401832112442782838951,
100470442341479765851591908475476895342,
241049111671168257801898223573666863059,
139197826094415251816510671569090212218,
73371475849610774600276735485442220492,
321031806373587100556524628628207173306,
70553598458795679727810425741185559539,
297273966300911440566694043047331846682,
],
ROUND_CONSTANTS,
);