本文目录导读:

Linux/Mac 命令行脚本 (Bash)
#!/bin/bash # 计算文件的 MD5, SHA1, SHA256 FILE=$1 echo "=== 文件校验码 ===" echo "文件: $FILE" echo "" # MD5 md5sum "$FILE" echo "" # SHA1 sha1sum "$FILE" echo "" # SHA256 sha256sum "$FILE"
Python 脚本
#!/usr/bin/env python3
import hashlib
import sys
def calculate_checksums(filepath):
"""计算文件的多种校验码"""
# 分块读取,适用于大文件
file_hash_md5 = hashlib.md5()
file_hash_sha1 = hashlib.sha1()
file_hash_sha256 = hashlib.sha256()
with open(filepath, 'rb') as f:
# 每次读取8KB
for chunk in iter(lambda: f.read(8192), b''):
file_hash_md5.update(chunk)
file_hash_sha1.update(chunk)
file_hash_sha256.update(chunk)
return {
'MD5': file_hash_md5.hexdigest(),
'SHA1': file_hash_sha1.hexdigest(),
'SHA256': file_hash_sha256.hexdigest()
}
if __name__ == "__main__":
if len(sys.argv) != 2:
print("用法: python checksum.py <文件名>")
sys.exit(1)
filepath = sys.argv[1]
try:
results = calculate_checksums(filepath)
print(f"\n文件: {filepath}")
print(f"文件大小: {os.path.getsize(filepath)} 字节")
print("=" * 50)
for algo, checksum in results.items():
print(f"{algo}: {checksum}")
except FileNotFoundError:
print(f"错误: 文件 {filepath} 不存在")
sys.exit(1)
except Exception as e:
print(f"错误: {e}")
sys.exit(1)
PowerShell 脚本 (Windows)
# calculate-checksum.ps1
param(
[Parameter(Mandatory=$true)]
[string]$FilePath,
[ValidateSet("MD5", "SHA1", "SHA256", "All")]
[string]$Algorithm = "All"
)
function Get-Checksum {
param(
[string]$FilePath,
[string]$Algorithm
)
$hash = Get-FileHash -Path $FilePath -Algorithm $Algorithm
return $hash.Hash
}
if (Test-Path $FilePath) {
$fileInfo = Get-Item $FilePath
Write-Host "文件: $FilePath" -ForegroundColor Green
Write-Host "大小: $($fileInfo.Length) 字节" -ForegroundColor Green
Write-Host "=" * 50
switch ($Algorithm) {
"MD5" {
$md5 = Get-Checksum $FilePath "MD5"
Write-Host "MD5: $md5"
}
"SHA1" {
$sha1 = Get-Checksum $FilePath "SHA1"
Write-Host "SHA1: $sha1"
}
"SHA256" {
$sha256 = Get-Checksum $FilePath "SHA256"
Write-Host "SHA256: $sha256"
}
"All" {
$md5 = Get-Checksum $FilePath "MD5"
$sha1 = Get-Checksum $FilePath "SHA1"
$sha256 = Get-Checksum $FilePath "SHA256"
Write-Host "MD5: $md5"
Write-Host "SHA1: $sha1"
Write-Host "SHA256: $sha256"
}
}
} else {
Write-Host "错误: 文件不存在" -ForegroundColor Red
}
批量处理脚本 (Python)
#!/usr/bin/env python3
import hashlib
import os
import json
from pathlib import Path
def calculate_file_hash(filepath, algorithm='sha256'):
"""计算单个文件的校验码"""
hash_func = hashlib.new(algorithm)
with open(filepath, 'rb') as f:
for chunk in iter(lambda: f.read(8192), b''):
hash_func.update(chunk)
return hash_func.hexdigest()
def generate_checksums(directory, algorithms=['md5', 'sha1', 'sha256']):
"""批量计算目录下所有文件的校验码"""
checksums = {}
for filepath in Path(directory).rglob('*'):
if filepath.is_file():
file_checksums = {}
for algo in algorithms:
file_checksums[algo] = calculate_file_hash(str(filepath), algo)
checksums[str(filepath)] = file_checksums
return checksums
if __name__ == "__main__":
import argparse
parser = argparse.ArgumentParser(description="批量生成文件校验码")
parser.add_argument("path", help="文件或目录路径")
parser.add_argument("-o", "--output", help="输出JSON文件")
parser.add_argument("-a", "--algorithms",
nargs="+",
default=['md5', 'sha1', 'sha256'],
help="选择算法 (如 -a md5 sha1 sha256)")
args = parser.parse_args()
if os.path.isdir(args.path):
results = generate_checksums(args.path, args.algorithms)
print(f"共找到 {len(results)} 个文件")
elif os.path.isfile(args.path):
checksums = {}
for algo in args.algorithms:
checksums[algo] = calculate_file_hash(args.path, algo)
results = {args.path: checksums}
else:
print(f"错误: {args.path} 不存在")
exit(1)
# 输出结果
if args.output:
with open(args.output, 'w') as f:
json.dump(results, f, indent=2)
print(f"结果已保存到: {args.output}")
else:
for filepath, checksums in results.items():
print(f"\n文件: {filepath}")
for algo, checksum in checksums.items():
print(f" {algo.upper()}: {checksum}")
使用 openssl 命令 (Linux)
#!/bin/bash
# 使用openssl计算校验码
FILE=$1
ALGORITHM="SHA256" # 可改为 MD5, SHA1, SHA256
if [ -f "$FILE" ]; then
openssl dgst -"$ALGORITHM" "$FILE"
else
echo "文件不存在"
exit 1
fi
使用示例
Python 脚本使用方法:
# 生成单个文件校验码 python3 checksum.py /path/to/file # 批量生成 python3 generate_checksums.py /path/to/directory -o checksums.json
Bash 脚本使用方法:
# 添加执行权限 chmod +x checksum.sh # 运行 ./checksum.sh /path/to/file
PowerShell 使用方法:
# 运行 .\calculate-checksum.ps1 -FilePath "C:\test\file.zip" -Algorithm All
特点说明
- 内存优化:使用分块读取,适合大文件
- 多算法支持:可同时计算 MD5、SHA1、SHA256
- 错误处理:包含文件不存在等异常处理
- 批量处理:可处理整个目录
- 输出格式:简洁清晰的格式化输出
选择哪种方法取决于你的操作系统和使用场景,Linux/Mac 推荐使用 Bash 或 Python,Windows 推荐使用 PowerShell 或 Python。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播