哈希数据库构建器和反向查找工具。SHA + aha!
从单词列表构建预计算的哈希数据库,然后查询它们以查找原像。
cargo install shaha
或者从源码构建:
git clone https://github.com/oritwoen/shaha
cd shaha
cargo build --release
# Single algorithm (default: sha256)
shaha build words.txt
# Multiple algorithms
shaha build words.txt -a md5 -a sha256 -a keccak256
# Custom output file
shaha build words.txt -o mydb.parquet
# With source metadata
shaha build rockyou.txt -a hash160 -s rockyou
# Find preimage by hash
shaha query 5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8
# Prefix search
shaha query 5e8848
# Filter by algorithm
shaha query 5e8848 -a sha256
# Output formats
shaha query 5e8848 --format plain # default
shaha query 5e8848 --format json
shaha query 5e8848 --format table
shaha info hashes.parquet
输出:
Database: "hashes.parquet"
Records: 1000000
Size: 45.32 MB
Algorithms: sha256, md5, keccak256
Sources: rockyou
数据库以 Apache Parquet 文件格式存储,并使用 ZSTD 压缩。
模式:
hash(二进制) - 哈希字节preimage(Utf8) - 原始输入数据algorithm(Utf8) - 算法名称sources(List) - 单词列表来源Parquet 文件可以使用 DuckDB、Polars、Spark 或 Cloudflare R2 SQL 进行查询。
配置按优先级从以下位置加载:
.shaha.toml~/.config/shaha/config.toml[storage.r2]
endpoint = "https://account-id.r2.cloudflarestorage.com"
bucket = "my-bucket"
access_key_id = "your-access-key"
secret_access_key = "your-secret-key"
region = "auto"
path = "hashes.parquet"
[defaults]
algorithms = ["sha256", "md5"]
output = "hashes.parquet"
直接在 Cloudflare R2 或兼容 S3 的存储中构建和查询:
# Build to R2
shaha build words.txt --r2
# Query from R2
shaha query 5e8848 --r2
环境变量:
SHAHA_R2_ENDPOINT - S3/R2 端点 URLSHAHA_R2_BUCKET - 存储桶名称SHAHA_R2_ACCESS_KEY_ID 或 AWS_ACCESS_KEY_IDSHAHA_R2_SECRET_ACCESS_KEY 或 AWS_SECRET_ACCESS_KEYSHAHA_R2_PATH - 存储桶内的路径SHAHA_R2_REGION - 区域(默认值:"auto")MIT
| 名称 | 描述 | 输出 |
|---|
md5 | MD5 | 128 位 |
sha1 | SHA-1 | 160 位 |
sha256 | SHA-256 | 256 位 |
sha512 | SHA-512 | 512 位 |
hash160 | RIPEMD160(SHA256(x)) - 比特币地址 | 160 位 |
hash256 | SHA256(SHA256(x)) - 比特币区块/交易ID | 256 位 |
keccak256 | Keccak-256 - 以太坊 | 256 位 |
blake3 | BLAKE3 | 256 位 |
ripemd160 | RIPEMD-160 | 160 位 |