| id | hash-toolkit |
| version | 1.0.0 |
| name | Hash Toolkit |
| description | Content hashing for deduplication with MD5, SHA256, and perceptual hashing |
| author | NeoClaw Team |
| category | utility |
| tags | ["hashing","deduplication","md5","sha256"] |
| dependencies | [] |
Hash Toolkit
Multi-algorithm hashing for content deduplication and verification.
Implementation
const crypto = require('crypto');
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;
}
module.exports = {
generateHash,
generateMultipleHashes,
generatePerceptualHash,
checkDuplicate,
calculateHashSimilarity
};
Usage
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('Duplicate content detected');
}
const phash = skills.hashToolkit.generatePerceptualHash(imageData);
Configuration
{
"defaultAlgorithm": "sha256",
"enablePerceptual": true
}