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.
- 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
npm install php-bcrypt-converter
# or
yarn add php-bcrypt-converterimport { 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);
}const options = {
rounds: 12, // Default rounds if needed
strict: false // Don't throw errors for invalid hashes
};
const result = converter.convert(phpHash, options);// 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);
}Creates a new instance of the converter.
Converts a PHP bcrypt hash to JavaScript format.
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)
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)
interface ConversionOptions {
rounds?: number;
strict?: boolean;
}
interface ConversionResult {
hash: string;
rounds: number;
success: boolean;
error?: string;
}git clone https://github.com/Dippys/php-bcrypt-converter.git
cd php-bcrypt-converter
npm installnpm test
npm run test:watch # Run tests in watch mode- 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
This project is licensed under the MIT License - see the LICENCE file for details.
- Inspired by the need for PHP/JavaScript bcrypt compatibility
- Built with TypeScript for type safety and better developer experience
For support, please open an issue in the GitHub repository.