https://github.com/itzshoaib/hashtegrity
A library for generating hash, validating data integrity, monitoring file/directory integrity, offchain data integrity
https://github.com/itzshoaib/hashtegrity
crypto-hash data data-integrity hacktoberfest hash integrity
Last synced: 3 months ago
JSON representation
A library for generating hash, validating data integrity, monitoring file/directory integrity, offchain data integrity
- Host: GitHub
- URL: https://github.com/itzshoaib/hashtegrity
- Owner: ITZSHOAIB
- License: mit
- Created: 2024-10-03T20:47:50.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2024-10-22T09:16:14.000Z (12 months ago)
- Last Synced: 2024-10-23T13:50:19.843Z (12 months ago)
- Topics: crypto-hash, data, data-integrity, hacktoberfest, hash, integrity
- Language: TypeScript
- Homepage: https://www.npmjs.com/package/hashtegrity
- Size: 256 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: .github/CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
# 🌟 Hashtegrity 🌟
**Secure your data with ease!** `Hashtegrity` is a powerful library for generating hashes and validating data integrity, ensuring your data remains untampered and secure.
## 🚀 Features
- **Verifiable Hash List**: Create and verify **Merkle trees** for large list of data. Generate proof and verify efficiently.
- **Versatile Hashing**: Supports multiple hashing algorithms like `sha256`, `md5`, and more.
- **HMAC Generation**: Easily generate HMACs for added security.
- **Data Integrity Validation**: Validate the integrity of your data with simple functions.
- **File Integrity Validation**: Validate the integrity of your file easily.
- **File Integrity Monitoring**: Monitor file changes and validate integrity in real-time.
- **TypeScript Support**: Fully typed for a seamless development experience.## 📦 Installation
Install the package:
```bash
npm install hashtegrity
```## 🛠️ Usage
### VerifiableHashList
The `VerifiableHashList` feature allows you to create and verify Merkle trees for data integrity. This is particularly useful for ensuring the integrity of a list of items very efficiently.
```typescript
import { VerifiableHashList } from "hashtegrity";// Create a verifiable hash list
const hashList = new VerifiableHashList(["item1", "item2"]);// Get the root hash of the Merkle tree
// **Which can be stored onchain
const rootHash = hashList.getRootHash();
console.log("Root Hash:", rootHash);// Add an item to the list
const newRootHash = hashList.addItem("item3");
console.log("New Root Hash:", newRootHash);// Verify an item in the list
const isValid = hashList.verifyItem("item3", newRootHash);
console.log("Is Valid:", isValid);// Serialize the hash list into JSON
// **can be stored offchain
const json = hashList.toJSON();
console.log("Serialized Hash List:", json);// Deserialize the hash list and again convert into VerifiableHashList instance
const deserializedHashList = VerifiableHashList.fromJSON(json);
console.log("Deserialized Root Hash:",
deserializedHashList.getRootHash()
);
```### Generate a Hash
```typescript
import { generateHash } from "hashtegrity";const hash = generateHash({ data: { key: "value" }, algorithm: "sha256" });
```### Generate an HMAC
```typescript
import { generateHash } from "hashtegrity";const hmac = generateHash({
data: "message",
key: "secret-key",
algorithm: "sha256",
});
```### Generate a File Hash
```typescript
import { generateFileHash } from "hashtegrity";const hash = await generateFileHash({
filePath: "path/to/your/file.txt",
algorithm: "sha256",
});
```### Generate Directory Hash
```typescript
import { generateDirectoryHash } from 'hashtegrity';const hash = await generateDirectoryHash({
directoryPath: "path/to/directory",
});
```### Validate Data Integrity
```typescript
import { validateIntegrity } from 'hashtegrity';const isValid = await validateIntegrity({
type: "data",
data: "your-data-of-any-type",
expectedHash: "4d4f638fd1c15eb71e1c7b46556c6d76cf6cc0cf1961d9e39a5fdc988a22cfe2",
algorithm: "sha256",
});
```### Validate File Integrity
```typescript
import { validateIntegrity } from 'hashtegrity';const isValid = await validateIntegrity({
type: "file",
filePath: "path/to/your/file.txt",
expectedHash: "4d4f638fd1c15eb71e1c7b46556c6d76cf6cc0cf1961d9e39a5fdc988a22cfe2",
algorithm: "sha256",
});
```### Validate Directory Integrity
```typescript
import { validateIntegrity } from 'hashtegrity';const isValid = await validateIntegrity({
type: "directory",
filePath: "path/to/your/directory",
expectedHash: "4d4f638fd1c15eb71e1c7b46556c6d76cf6cc0cf1961d9e39a5fdc988a22cfe2",
algorithm: "sha256",
});
```### Monitor File Integrity
```typescript
import { monitorIntegrity } from 'hashtegrity';const options = {
type: "file",
filePath: "path/to/your/file.txt",
algorithm: "sha256",
key: "your-secret-key",
metadata: { custom: "data" },
expectedHash:
"4d4f638fd1c15eb71e1c7b46556c6d76cf6cc0cf1961d9e39a5fdc988a22cfe2",
onIntegrityCheckFailed: (error) => {
console.error("Integrity check failed:", error);
},
onError: (error) => {
console.error("Error:", error);
},
};await monitorIntegrity(options);
console.log("Monitoring started");
```### Monitor Directory Integrity
```typescript
import { monitorIntegrity } from 'hashtegrity';const options = {
type: "directory",
filePath: "path/to/your/directory",
algorithm: "sha256",
key: "your-secret-key",
metadata: { custom: "data" },
expectedHash:
"4d4f638fd1c15eb71e1c7b46556c6d76cf6cc0cf1961d9e39a5fdc988a22cfe2",
onIntegrityCheckFailed: (error) => {
console.error("Integrity check failed:", error);
},
onError: (error) => {
console.error("Error:", error);
},
};await monitorIntegrity(options);
console.log("Monitoring started");
```## 🤝 Contribution
We welcome contributions! Please see the [CONTRIBUTING.md](.github/CONTRIBUTING.md) file for detailed guidelines on how to contribute.
## 📜 License
This project is licensed under the MIT License. See the [LICENSE file](/LICENSE) for details.
---
Created with ❤️ by Sohab Sk