https://github.com/stringmanolo/5um
Fast "hash" algorithm.
https://github.com/stringmanolo/5um
Last synced: 10 months ago
JSON representation
Fast "hash" algorithm.
- Host: GitHub
- URL: https://github.com/stringmanolo/5um
- Owner: StringManolo
- Created: 2023-08-11T19:33:16.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2023-08-11T22:36:49.000Z (over 2 years ago)
- Last Synced: 2025-03-07T20:37:57.115Z (11 months ago)
- Language: C
- Size: 9.37 MB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# 5um
Fast "hash" algorithm designed for insecure hashing usage.
Sometimes you need a fast hash but you don't care about the security of the hash.
#### Use Cases
- Detect if a file has changed
You can check if a file has changed by using this hash funcion.
- Fast Lookup in Large Data Sets
If you need to compare large volumes of data and only require a quick match
- Duplicate Detection
You can employ "5um" to identify duplicates in extensive file collections where precision isn't critical, and you only need a fast way to identify similar files
- Real-time Checksum Generation
In applications where rapid data integrity checks are needed in real-time, "5um" could provide a balance between speed and simplicity
- Cache Key Generation
If you wish to use a hash for caching and retrieving data, and security isn't a concern, "5um" could be suitable
- Search Algorithm Optimization
Certain search algorithms, such as those based on hash tables, might benefit from a fast hash like "5um" to expedite the search process
#### Installation
1. Install the package
```bash
npm install 5um
```
2. Compile the c function for your architecture
```bash
gcc -o ./node_modules/5um/dist/c/hash5um.so -shared -fPIC ./node_modules/5um/src/c/hash5um.c
```
#### Usage
- As a system command
```bash
npx 5um hello.txt
```
- As a module
```javascript
const hash5um = require("5um");
const inputFile = process.argv[2];
const hash = hash5um('./hello.txt'); // returns a BigInt
console.log(hash.toString(16));
```
```typescript
// npm install --save-dev @types/ffi-napi
import hash5um from "5um";
const inputFile = process.argv[2];
const hash = hash5um('./hello.txt'); // returns a BigInt
console.log(hash.toString(16));
```
##### Characteristics
- Fast
- Easy to use
- Insecure
- Reversible
- Predictable
- Collisions