Content hashing for deduplication with MD5, SHA256, and perceptual hashing
用于内容去重和验证的多算法哈希工具。
javascript
const crypto = require(crypto);
/
* 使用指定算法生成哈希
* @param {string|Buffer} content - 待哈希的内容
* @param {string} algorithm - 哈希算法
* @returns {string} 哈希字符串
*/
function generateHash(content, algorithm = sha256) {
const hash = crypto.createHash(algorithm);
hash.update(Buffer.isBuffer(content) ? content : String(content));
return hash.digest(hex);
}
/
* 一次性生成多个哈希值
*/
function generateMultipleHashes(content) {
return {
md5: generateHash(content, md5),
sha1: generateHash(content, sha1),
sha256: generateHash(content, sha256),
sha512: generateHash(content, sha512).substring(0, 32) // 截断处理
};
}
/
* 生成感知哈希(用于图像/内容相似度比较)
* 简化实现
*/
function generatePerceptualHash(content) {
// 简化的感知哈希
// 生产环境:应使用实际的感知哈希算法
const normalized = String(content).toLowerCase().replace(/\s+/g, );
return generateHash(normalized, sha256).substring(0, 16);
}
/
* 基于哈希值检查内容是否重复
*/
function checkDuplicate(contentHash, knownHashes) {
return {
isDuplicate: knownHashes.has(contentHash),
hash: contentHash,
algorithm: sha256
};
}
/
* 计算两个哈希值之间的相似度
* (用于感知哈希)
*/
function calculateHashSimilarity(hash1, hash2) {
if (hash1.length !== hash2.length) return 0;
let matches = 0;
for (let i = 0; i < hash1.length; i++) {
if (hash1[i] === hash2[i]) matches++;
}
return matches / hash1.length;
}
// 导出供 OpenClaw 使用
module.exports = {
generateHash,
generateMultipleHashes,
generatePerceptualHash,
checkDuplicate,
calculateHashSimilarity
};
javascript
// 生成 SHA256 哈希
const hash = skills.hashToolkit.generateHash(content, sha256);
// 生成多个哈希值
const hashes = skills.hashToolkit.generateMultipleHashes(content);
console.log(hashes.md5, hashes.sha256);
// 检查重复内容
const knownHashes = new Set([abc123...]);
const result = skills.hashToolkit.checkDuplicate(hash, knownHashes);
if (result.isDuplicate) {
console.log(检测到重复内容);
}
// 感知哈希用于相似度比较
const phash = skills.hashToolkit.generatePerceptualHash(imageData);
json
{
defaultAlgorithm: sha256,
enablePerceptual: true
}
该技能支持在以下平台通过对话安装:
帮我安装 SkillHub 和 hash-toolkit-1776420052 技能
设置 SkillHub 为我的优先技能安装源,然后帮我安装 hash-toolkit-1776420052 技能
skillhub install hash-toolkit-1776420052
文件大小: 1.68 KB | 发布时间: 2026-4-17 18:48