php-bcrypt-converter
v1.2.1
Published
Convert PHP bcrypt hashes to JavaScript bcrypt format
Downloads
930
Maintainers
Readme
php-bcrypt-converter
A TypeScript package for converting PHP bcrypt hashes to JavaScript bcrypt format. This package helps maintain compatibility between PHP and JavaScript applications that use bcrypt hashing.
Features
- Convert PHP bcrypt hashes (
$2y$
) to JavaScript format ($2b$
) - Preserve hash rounds and salt
- Full TypeScript support
- Comprehensive error handling
- Configurable strict mode
- 100% test coverage
Installation
npm install php-bcrypt-converter
# or
yarn add php-bcrypt-converter
Usage
Basic Usage
import { PhpBcryptConverter } from 'php-bcrypt-converter';
const converter = new PhpBcryptConverter();
// Convert a PHP bcrypt hash
const result = converter.convert('$2y$10$abcdefghijklmnopqrstuv.wxyzABCDEFGHIJKLMNOPQRSTUVWXYZ');
if (result.success) {
console.log(result.hash); // '$2b$10$abcdefghijklmnopqrstuv.wxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
console.log(result.rounds); // 10
} else {
console.error(result.error);
}
With Options
const options = {
rounds: 12, // Default rounds if needed
strict: false // Don't throw errors for invalid hashes
};
const result = converter.convert(phpHash, options);
Error Handling
// Strict mode (default)
try {
const result = converter.convert(invalidHash);
} catch (error) {
console.error('Invalid hash format');
}
// Non-strict mode
const result = converter.convert(invalidHash, { strict: false });
if (!result.success) {
console.error(result.error);
}
API Reference
PhpBcryptConverter Class
constructor()
Creates a new instance of the converter.
convert(phpHash: string, options?: ConversionOptions): ConversionResult
Converts a PHP bcrypt hash to JavaScript format.
Parameters:
phpHash
: The PHP bcrypt hash to convertoptions
(optional): Configuration optionsrounds
: Default number of rounds (default: 12)strict
: Whether to throw errors for invalid hashes (default: true)
Returns:
A ConversionResult
object containing:
hash
: The converted JavaScript bcrypt hashrounds
: Number of rounds detected from the hashsuccess
: Whether the conversion was successfulerror
: Error message if conversion failed (only in non-strict mode)
Types
interface ConversionOptions {
rounds?: number;
strict?: boolean;
}
interface ConversionResult {
hash: string;
rounds: number;
success: boolean;
error?: string;
}
Development
Setup
git clone https://github.com/Dippys/php-bcrypt-converter.git
cd php-bcrypt-converter
npm install
Running Tests
npm test
npm run test:watch # Run tests in watch mode
Contributing
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add some amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
License
This project is licensed under the MIT License - see the LICENCE file for details.
Acknowledgments
- Inspired by the need for PHP/JavaScript bcrypt compatibility
- Built with TypeScript for type safety and better developer experience
Support
For support, please open an issue in the GitHub repository.