fast-md5-web
Version:
A TypeScript project with tsup bundler for Rust WASM MD5 calculation
86 lines (70 loc) • 3.32 kB
HTML
<html>
<head>
<meta charset="UTF-8">
<title>简单MD5测试</title>
<script src="https://cdn.jsdelivr.net/npm/spark-md5@3.0.2/spark-md5.min.js"></script>
</head>
<body>
<h1>MD5测试</h1>
<div id="results"></div>
<script type="module">
import init, { Md5Calculator } from './wasm_md5.js';
async function test() {
await init();
const calculator = new Md5Calculator();
calculator.set_log_enabled(true);
const results = document.getElementById('results');
// 测试空文件
console.log('=== 空文件测试 ===');
const emptyData = new Uint8Array(0);
const wasmEmpty = await calculator.calculate_md5_async(emptyData, 32);
const sparkEmpty = new SparkMD5.ArrayBuffer();
sparkEmpty.append(emptyData.buffer);
const sparkEmptyResult = sparkEmpty.end();
const expected = 'd41d8cd98f00b204e9800998ecf8427e';
results.innerHTML += `
<h3>空文件测试</h3>
<p>WASM: ${wasmEmpty}</p>
<p>Spark: ${sparkEmptyResult}</p>
<p>Expected: ${expected}</p>
<p>WASM正确: ${wasmEmpty === expected}</p>
<p>Spark正确: ${sparkEmptyResult === expected}</p>
<p>一致: ${wasmEmpty === sparkEmptyResult}</p>
`;
// 测试"hello"字符串
console.log('=== hello字符串测试 ===');
const helloData = new TextEncoder().encode('hello');
const wasmHello = await calculator.calculate_md5_async(helloData, 32);
const sparkHello = new SparkMD5.ArrayBuffer();
sparkHello.append(helloData.buffer);
const sparkHelloResult = sparkHello.end();
const expectedHello = '5d41402abc4b2a76b9719d911017c592'; // "hello"的MD5
results.innerHTML += `
<h3>"hello"字符串测试</h3>
<p>WASM: ${wasmHello}</p>
<p>Spark: ${sparkHelloResult}</p>
<p>Expected: ${expectedHello}</p>
<p>WASM正确: ${wasmHello === expectedHello}</p>
<p>Spark正确: ${sparkHelloResult === expectedHello}</p>
<p>一致: ${wasmHello === sparkHelloResult}</p>
`;
// 测试单字节
console.log('=== 单字节测试 ===');
const singleByte = new Uint8Array([65]); // 'A'
const wasmSingle = await calculator.calculate_md5_async(singleByte, 32);
const sparkSingle = new SparkMD5.ArrayBuffer();
sparkSingle.append(singleByte.buffer);
const sparkSingleResult = sparkSingle.end();
results.innerHTML += `
<h3>单字节'A'测试</h3>
<p>WASM: ${wasmSingle}</p>
<p>Spark: ${sparkSingleResult}</p>
<p>一致: ${wasmSingle === sparkSingleResult}</p>
`;
console.log('测试完成');
}
test().catch(console.error);
</script>
</body>
</html>