Coder Social home page Coder Social logo

meikoudras / phpass Goto Github PK

View Code? Open in Web Editor NEW

This project forked from rchouinard/phpass

0.0 2.0 0.0 394 KB

PHP Password Library: Easy, secure password management for PHP

Home Page: http://rchouinard.github.com/phpass/

License: MIT License

PHP 100.00%

phpass's Introduction

PHP Password Library

The PHP Password Library is designed to ease the tasks associated with working with passwords in PHP. It is capable of generating strong cryptographic password hashes, verifying supplied password strings against those hashes, and calculating the strength of a password string using various algorithms.

This project was inspired by Openwall's portable hashing library for PHP and PassLib for Python.

Features

  • Create and verify secure password hashes with only a few lines of code.
  • Supports bcrypt and PBKDF2 out of the box.
  • Easily extend to support additional hashing methods.
  • Additional password strength component based on well-known algorithms.
  • Follows the PSR-0 standard for autoloader compatibility.

Installation

PEAR

Installing via PEAR is a simple matter of including the PEAR channel and installing the rych/PHPass package.

pear channel-discover rchouinard.github.com/pear
pear install rych/PHPass-2.1.0-alpha

Composer

Composer is an easy way to manage dependencies in your PHP projects. The PHP Password Library can be found in the default Packagist repository.

After installing Composer into your project, the PHP Password Library can be installed by adding the following lines to your composer.json file and running the Composer command line tool:

{
  "require": {
    "rych/phpass": "2.1.0-dev"
  }
}

Usage

Hashing passwords

The library provides the ability to generate strong cryptographic hashes of user passwords using a variety of methods. Each method may be customized as needed, and may also be combined with HMAC hashing when using the base class.

Examples

Use the default bcrypt adapter:

<?php
// Default configuration - bcrypt adapter, 2^12 (4,096) iterations
$phpassHash = new \Phpass\Hash;

Use the PBKDF2 adapter:

<?php
// Customize hash adapter - PBKDF2 adapter, 15,000 iterations
$adapter = new \Phpass\Hash\Adapter\Pbkdf2(array (
    'iterationCount' => 15000
));
$phpassHash = new \Phpass\Hash($adapter);

Create and verify a password hash:

<?php
// Create and verify a password hash from any of the above configurations
$passwordHash = $phpassHash->hashPassword($password);
if ($phpassHash->checkPassword($password, $passwordHash)) {
    // Password matches...
} else {
    // Password doesn't match...
}

Calculating password strength

There are many different ways to calculate the relative strength of a given password, and this library supports a few of the most common. Each method returns a number which represents the estimated entropy for the given password. It's up to the developer to determine the minimum calculated entropy to accept. Combined with a sensible password policy, this can be a valuable tool in selecting strong passwords.

Examples

Calculate a password's entropy using NIST recommendations:

<?php
// Default configuration (NIST recommendations)
$phpassStrength = new \Phpass\Strength;

// Returns 30
$passwordEntropy = $phpassStrength->calculate('MySecretPassword');

Calculate a password's entropy using Wolfram Alpha's algorithm:

<?php
// Custom strength adapter (Wolfram algorithm)
$adapter = new \Phpass\Strength\Adapter\Wolfram;
$phpassStrength = new \Phpass\Strength($adapter);

// Returns 59
$passwordEntropy = $phpassStrength->calculate('MySecretPassword');

phpass's People

Contributors

rchouinard avatar meikoudras avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.