Git Product home page Git Product logo

phpcrypt's Introduction

Latest Stable Version Total Downloads Build Status Coverage Status License

PhpCrypt

PhpCrypt is a package for encryption, decryption, and hashing data in PHP projects. It provides an easy-to-use and fluent interface.

Features:

  • Symmetric encryption/decryption using AES and other symmetric methods.
  • Asymmetric encryption/decryption using the RSA method.
  • Hashing and verifying data (e.g. passwords) using the BCrypt method.

Versions

  • v5.x.x
  • v4.x.x
  • v3.x.x (Unsupported)
  • v2.x.x (Unsupported)
  • v1.x.x (Unsupported)

Installation

Install Composer and run the following command in your project's root directory:

composer require miladrahimi/phpcrypt "5.*"

Symmetric Encryption

This example shows how to encrypt and decrypt data using symmetric algorithms like AES.

use MiladRahimi\PhpCrypt\Symmetric;

$symmetric = new Symmetric();
$encryptedData = $symmetric->encrypt('secret');
echo $symmetric->decrypt($encryptedData); // secret

It generates a random key and uses aes-256-cbc method for encrypting/decrypting data.

Custom Key

If you have already a key, you can use your own key like this:

use MiladRahimi\PhpCrypt\Symmetric;

$key = '1234567890123456';

// Set the key using the constructor
$symmetric = new Symmetric($key);

// Or set the key using the setter
$symmetric = new Symmetric();
$symmetric->setKey($key);

// And get the key using the getter
$myKey = $symmetric->getKey();

The method generateKey can help you to generate a new random key. See the snippet below.

use MiladRahimi\PhpCrypt\Symmetric;

$key = Symmetric::generateKey();

Custom Methods

In default, The Symmetric class uses aes-256-cbc method to encrypt/decrypt data. You can use your preferred method as well. See the following example.

use MiladRahimi\PhpCrypt\Exceptions\MethodNotSupportedException;
use MiladRahimi\PhpCrypt\Symmetric;

try {
    $symmetric = new Symmetric();
    $symmetric->setMethod('aria-256-ctr');
    // ...
} catch (MethodNotSupportedException $e) {
    // The method is not supported.
}

Supported Methods

If you want to know which methods do your installed OpenSSL extension support, see the snippet below:

use MiladRahimi\PhpCrypt\Symmetric;

print_r(Symmetric::supportedMethods());

RSA Encryption

RSA is a popular asymmetric encryption/decryption algorithm. The examples below illustrate how to encrypt/decrypt data using the RSA algorithm.

Encryption with private key

In this example, we encrypt data with a private key and decrypt it with the related public key.

use MiladRahimi\PhpCrypt\PrivateRsa;
use MiladRahimi\PhpCrypt\PublicRsa;

$privateRsa = new PrivateRsa('private_key.pem');
$publicRsa = new PublicRsa('public_key.pem');

$result = $privateRsa->encrypt('secret');
echo $publicRsa->decrypt($result); // secret

Encryption with public key

In this example, we encrypt data with a public key and decrypt it with the related private key.

use MiladRahimi\PhpCrypt\PrivateRsa;
use MiladRahimi\PhpCrypt\PublicRsa;

$privateRsa = new PrivateRsa('private_key.pem');
$publicRsa = new PublicRsa('public_key.pem');

$result = $publicRsa->encrypt('secret');
echo $privateRsa->decrypt($result); // secret

Base64 Encoding

In default, the encrypted data returned by PrivateRsa::encrypt() and PublicRsa::encrypt() methods will be Base64 encoded. You can disable this encoding like the example below.

use MiladRahimi\PhpCrypt\PrivateRsa;
use MiladRahimi\PhpCrypt\PublicRsa;

$privateRsa = new PrivateRsa('private_key.pem');
$publicRsa = new PublicRsa('public_key.pem');

// Disable Base64 encoding for public encryption
$result = $publicRsa->encrypt('secret', false);

// Disable Base64 encoding for private encryption
$result = $privateRsa->encrypt('secret', false);

Hashing

This example shows how to hash data and verify it.

use MiladRahimi\PhpCrypt\Hash;

$hash = new Hash();

$hashedPassword = $hash->make('MyPassword');
echo $hash->verify('MyPassword', $hashedPassword); // true
echo $hash->verify('AnotherPassword', $hashedPassword); // false

Error Handling

The Symmetric, PrivateRsa, PublicRsa, and Hash classes may throw these exceptions:

  • EncryptionException: When it cannot encrypt data.
  • DecryptionException: When it cannot decrypt data.
  • HashingException: When it cannot hash data.
  • MethodNotSupportedException: When the passed encryption method to the Symmetric class is not supported.
  • InvalidKeyException: When the passed key to PrivateRsa or PublicRsa classes is not valid.

License

PhpCrypt is initially created by Milad Rahimi and released under the MIT License.

phpcrypt's People

Contributors

miladrahimi avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

phpcrypt's Issues

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.