Hashids
Hashids stats
- Downloads
- 6.8M
- Stars
- 5,065
- Open Issues
- 0
- Forks
- 418
A Hashids bridge for Laravel
Laravel Hashids Package Overview
The Hashids package is a PHP library designed to convert numeric identifiers into a short, unique, non-sequential hash, akin to YouTube's video IDs. This is particularly useful for developers looking to hide database numeric IDs from end users.
Key Features
- Obfuscation of IDs: Converts numbers into a more user-friendly and non-sequential hash string.
- Flexible Input Handling: Supports encoding from single, multiple numbers or arrays, and even hexadecimal values.
- Customizable Hash Generation: Allows customization of hash output through salt, length, and custom alphabets.
- Decoding Capability: Encoded strings can be easily decoded back to the original numbers.
Installation
To install Hashids, run the following Composer command in your project's root directory:
composer require hashids/hashids
Ensure you have one of the PHP extensions bcmath or gmp installed, as they are necessary for the package to function correctly.
Usage Examples
-
Basic Encoding and Decoding:
use Hashids\Hashids;$hashids = new Hashids();$id = $hashids->encode(1, 2, 3);$numbers = $hashids->decode($id); -
Customization:
- Unique Salts: Different salts generate different hashes for the same input numbers.
- Padding: Specify a minimum hash length.
- Custom Alphabet: Define a custom alphabet for hash generation.
- Hexadecimal Encoding: Encode and decode hexadecimal numbers.
$hashids = new Hashids('My Project', 10, 'abcdefghijklmnopqrstuvwxyz');$id = $hashids->encode(1); // Custom length and alphabet
Important Notes
- Output Format: Decoding always returns an array.
- Non-Negative Inputs: Negative numbers cannot be encoded.
- Error Handling: Invalid input to the
encode()method returns an empty string. - Security: Hashids should not be used as a security measure or encryption tool.
Practical Use
While it does not offer security encryption, Hashids is excellent for obfuscating identifiers in public-facing elements like URLs, thereby preventing predictable sequential IDs and enhancing the aesthetic and security posture of web applications.
For more detailed information, visit the official Hashids documentation.