1.2.1 • Published 7 months ago

php-bcrypt-converter v1.2.1

Weekly downloads
-
License
MIT
Repository
github
Last release
7 months ago

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.

npm version License: MIT

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 convert
  • options (optional): Configuration options
    • rounds: 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 hash
  • rounds: Number of rounds detected from the hash
  • success: Whether the conversion was successful
  • error: 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

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add some amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. 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.

1.2.1

7 months ago

1.2.0

7 months ago

1.1.6

7 months ago

1.1.5

7 months ago

1.1.4

7 months ago

1.1.3

7 months ago

1.1.2

7 months ago

1.1.1

7 months ago

1.1.0

7 months ago

1.0.3

7 months ago

1.0.2

7 months ago

1.0.1

7 months ago

1.0.0

7 months ago