Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
BLAKE3 — Fonction de hachage cryptographique rapide avec modes PRF, MAC, KDF et XOF. Prend en charge le streaming vérifié, les mises à jour incrémentielles et le hachage parallélisé via une structure d'arbre de Merkle. | Kitploit
Outils/GitHubGitHub/blake3-team/blake3
Outils de Chiffrement/DéchiffrementAnalyse de HachageCryptographie
GitHubblake3-team/blake3

BLAKE3

Fonction de hachage cryptographique rapide avec modes PRF, MAC, KDF et XOF. Prend en charge le streaming vérifié, les mises à jour incrémentielles et le hachage parallélisé via une structure d'arbre de Merkle.

Voir le dépôt
6.4k469il y a 14 joursVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

BLAKE3

BLAKE3 est une fonction de hachage cryptographique qui est :

  • Beaucoup plus rapide que MD5, SHA-1, SHA-2, SHA-3 et BLAKE2.
  • Sécurisée, contrairement à MD5 et SHA-1. Et résistante à l'extension de longueur, contrairement à SHA-2.
  • Hautement parallélisable sur un nombre quelconque de threads et de voies SIMD, car c'est un arbre de Merkle en interne.
  • Capable de streaming vérifié et de mises à jour incrémentielles, encore une fois parce que c'est un arbre de Merkle.
  • Une PRF, MAC, KDF et XOF, ainsi qu'un hachage classique.
  • Un seul algorithme sans variantes, rapide sur x86-64 et aussi sur des architectures plus petites.

Le graphique ci-dessous est un exemple de benchmark avec des entrées de 16 Ko sur un processeur serveur Cascade Lake-SP 8275CL de 2019. Pour des benchmarks plus détaillés, consultez le papier BLAKE3.

graphique de performance

BLAKE3 est basé sur une instance optimisée de la fonction de hachage établie BLAKE2 et sur le mode d'arbre Bao original. Les spécifications et la justification de la conception sont disponibles dans le papier BLAKE3. La taille de sortie par défaut est de 256 bits. La version actuelle de Bao implémente le streaming vérifié avec BLAKE3.

Ce dépôt est l'implémentation officielle de BLAKE3. Il inclut :

  • La crate Rust blake3, qui comprend des implémentations optimisées pour SSE2, SSE4.1, AVX2, AVX-512, NEON et WASM, avec détection automatique des fonctionnalités CPU au moment de l'exécution sur x86. La fonctionnalité rayon permet le multithreading.

  • La crate Rust b3sum, qui fournit une interface en ligne de commande. Elle utilise le multithreading par défaut, ce qui la rend un ordre de grandeur plus rapide que, par exemple, sha256sum sur du matériel de bureau typique.

  • L'implémentation C, qui, comme l'implémentation Rust, inclut des optimisations SIMD (toutes sauf WASM), la détection des fonctionnalités CPU sur x86 et un multithreading optionnel. Voir c/README.md.

  • L'implémentation de référence Rust, qui est discutée dans la section 5.1 du papier BLAKE3. Cette implémentation est beaucoup plus petite et plus simple que les optimisées ci-dessus. Si vous voulez voir comment BLAKE3 fonctionne, ou si vous écrivez un portage qui n'a pas besoin de multithreading ou d'optimisations SIMD, commencez ici. Les portages de l'implémentation de référence vers d'autres langages sont hébergés dans des dépôts séparés (C, Python).

  • Un ensemble de vecteurs de test qui couvre les sorties étendues, les trois modes et une variété de longueurs d'entrée.

BLAKE3 a été conçu par :

  • @oconnor663 (Jack O'Connor)
  • @sneves (Samuel Neves)
  • @veorq (Jean-Philippe Aumasson)
  • @zookozcash (Zooko)

Le développement de BLAKE3 a été sponsorisé par Electric Coin Company.

BLAKE3 est également spécifié dans le Projet de Spécification de Cryptographie Communautaire (C2SP).

NOTE : BLAKE3 n'est pas un algorithme de hachage de mots de passe, car il est conçu pour être rapide, alors que le hachage de mots de passe ne devrait pas être rapide. Si vous hachez des mots de passe pour stocker les hachages ou si vous dérivez des clés à partir de mots de passe, nous recommandons Argon2.

Utilisation

L'utilitaire b3sum

L'utilitaire en ligne de commande b3sum affiche les hachages BLAKE3 des fichiers ou de l'entrée standard. Des binaires précompilés sont disponibles pour Linux, Windows et macOS (nécessitant la procédure de contournement pour développeur non identifié) sur la page des versions. Si vous avez installé Rust et Cargo, vous pouvez également compiler b3sum vous-même avec :

root@kitploit:~
cargo install b3sum

Si rustup n'a pas configuré votre PATH pour vous, vous devrez peut-être chercher le binaire installé dans e.g. ~/.cargo/bin. Vous pouvez tester la rapidité de BLAKE3 sur votre machine en créant un gros fichier et en le hachant, par exemple :

root@kitploit:~
# Create a 1 GB file.
head -c 1000000000 /dev/zero > /tmp/bigfile
# Hash it with SHA-256.
time openssl sha256 /tmp/bigfile
# Hash it with BLAKE3.
time b3sum /tmp/bigfile

La crate blake3 docs.rs

Pour utiliser BLAKE3 depuis du code Rust, ajoutez une dépendance à la crate blake3 dans votre Cargo.toml. Voici un exemple de hachage de quelques octets d'entrée :

root@kitploit:~
// Hash an input all at once.
let hash1 = blake3::hash(b"foobarbaz");

// Hash an input incrementally.
let mut hasher = blake3::Hasher::new();
hasher.update(b"foo");
hasher.update(b"bar");
hasher.update(b"baz");
let hash2 = hasher.finalize();
assert_eq!(hash1, hash2);

// Extended output. OutputReader also implements Read and Seek.
let mut output = [0; 1000];
let mut output_reader = hasher.finalize_xof();
output_reader.fill(&mut output);
assert_eq!(hash1, output[..32]);

// Print a hash as hex.
println!("{}", hash1);

Outre hash, BLAKE3 propose deux autres modes, keyed_hash et derive_key. Le mode keyed_hash prend une clé de 256 bits :

root@kitploit:~
// MAC an input all at once.
let example_key = [42u8; 32];
let mac1 = blake3::keyed_hash(&example_key, b"example input");

// MAC incrementally.
let mut hasher = blake3::Hasher::new_keyed(&example_key);
hasher.update(b"example input");
let mac2 = hasher.finalize();
assert_eq!(mac1, mac2);

Le mode derive_key prend une chaîne de contexte et du matériel de clé (pas un mot de passe). La chaîne de contexte doit être codée en dur, globalement unique et spécifique à l'application. Un bon format par défaut pour la chaîne de contexte est "[application] [commit timestamp] [purpose]" :

root@kitploit:~
// Derive a couple of subkeys for different purposes.
const EMAIL_CONTEXT: &str = "BLAKE3 example 2020-01-07 17:10:44 email key";
const API_CONTEXT: &str = "BLAKE3 example 2020-01-07 17:11:21 API key";
let input_key_material = b"usually at least 32 random bytes, not a password";
let email_key = blake3::derive_key(EMAIL_CONTEXT, input_key_material);
let api_key = blake3::derive_key(API_CONTEXT, input_key_material);
assert_ne!(email_key, api_key);

L'implémentation C

Voir c/README.md.

Autres implémentations

Il y a trop d'implémentations pour que nous puissions les suivre, mais quelques points forts incluent une implémentation Go optimisée, des liaisons Wasm pour Node.js et les navigateurs, des wheels binaires pour Python, des liaisons .NET et une implémentation Java pure.

Contribuer

Veuillez consulter CONTRIBUTING.md.

Licences

Ce travail est mis dans le domaine public avec CC0 1.0. Alternativement, il est sous licence selon l'une des suivantes :

  • Apache 2.0
  • Apache 2.0 with LLVM exceptions

Adoption et déploiement

  • Bazel
  • Cargo
  • Ccache
  • Chia
  • Clickhouse
  • Farcaster
  • IPFS
  • Iroh
  • LLVM
  • Nix
  • Nym
  • OpenZFS
  • Redox
  • Solana
  • Tekken 8
  • Wasmer

Divers

  • @veorq et @oconnor663 ont fait un entretien avec Cryptography FM.
  • @oconnor663 a fait un entretien avec Saito.
Télécharger l’outil
  • Actions Status