#sha-3 #const #keccak #crypto

nightly no-std sha3-const

SHA-3系列哈希和可扩展输出函数的const函数实现

2个版本

0.1.1 2022年10月12日
0.1.0 2022年5月23日

#1572 in 加密学

Download history 34/week @ 2024-03-24 464/week @ 2024-03-31 5/week @ 2024-04-07 24/week @ 2024-05-05 8/week @ 2024-05-19 100/week @ 2024-05-26 76/week @ 2024-06-02 55/week @ 2024-06-09 162/week @ 2024-06-16 144/week @ 2024-06-23 1/week @ 2024-06-30 110/week @ 2024-07-07

每月419次下载
用于 evm-coder

MIT/Apache

24KB
294

sha3-const

Build status Crate Documentation

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,
);

无运行时依赖