/HideMyData

Managing a couple of algorithms to decrypt or encrypt text [PHP]

Primary LanguagePHPMIT LicenseMIT

HideMyData (v2.0.1) Build Status

Managing a couple of algorithms to decrypt or encrypt text, powered by PHP.

Getting Started

These instructions will get you a copy of the project up and running on your local machine for development and testing purposes. See deployment for notes on how to deploy the project on a live system.

Installing

You can install using Composer

composer require eminmuhammadi/himemydata:dev-master

or

git clone https://github.com/eminmuhammadi/HideMyData.git

Codings

include_once 'vendor/autoload.php';

Library class called as eminmuhammadi\HideMyData\HideMyData and requires main 3 options to use. Secret Key and Public Key must be selected by individuals who need to use asymmetric encryption. There are a couple of algorithms divided into 2 part.

Basic Use

Encryption :

<?php

    require_once '../vendor/autoload.php';

    $text = 'HideMyData';
    $algo = 'aes256';

    try {
        $hider = (new eminmuhammadi\HideMyData\HideMyData('public-key', 'secret-key', $algo));

        $data = $hider->encrypt($text);
        print($data);
    }
    catch (Exception $e) {
        print($e);
    }

Result:

KzdOWXBBWDNWSElWWm1VUkprenBFZz09

Decryption :

<?php

    require_once '../vendor/autoload.php';

    $text = 'KzdOWXBBWDNWSElWWm1VUkprenBFZz09';
    $algo = 'aes256';

    try {
        $hider = (new eminmuhammadi\HideMyData\HideMyData('public-key', 'secret-key', $algo));

        $data = $hider->decrypt($text);
        print($data);
    }
    catch (Exception $e) {
        print($e);
    }

Result:

HideMyData

Time limiting for encryption|decryption

<?php

    require_once '../vendor/autoload.php';

    $text = 'HideMyData';
    $algo = 'aes256';

    try {
        $hider = (new eminmuhammadi\HideMyData\HideMyData('public-key', 'secret-key', $algo));

        /**
         * @example $date - {5 second} , { 5 minute } , { 5 day } , { 5 month } , { 5 year }
         */
        $data = $hider->encrypt($text,'1 minute');
        print($data);
    }
    catch (Exception $e) {
        print($e);
    }

Result :

QTRmOGpVMml6MDNVVG5IWERDblgzcFpzSE5oRHNYalVuT1NBV2w1UXB2clEyY2hRalVZbTVkL2ZJUjQ4MjNCT0RVUUZDb0NodGFCOTU2czVtUzNBMVU3eFhRRlM4cnhINmliWmRBY0I0eVo2dXdiaHY1bWxBWC85Y1piWUV4Qys=
<?php

    require_once '../vendor/autoload.php';

    $text = 'QTRmOGpVMml6MDNVVG5IWERDblgzcFpzSE5oRHNYalVuT1NBV2w1UXB2clEyY2hRalVZbTVkL2ZJUjQ4MjNCT0RVUUZDb0NodGFCOTU2czVtUzNBMVU3eFhRRlM4cnhINmliWmRBY0I0eVo2dXdiaHY1bWxBWC85Y1piWUV4Qys=';
    $algo = 'aes256';

    try {
        $hider = (new eminmuhammadi\HideMyData\HideMyData('public-key', 'secret-key', $algo));

        /**
         * @example $date - {5 second} , { 5 minute } , { 5 day } , { 5 month } , { 5 year }
         */
        $data = $hider->decrypt($text,'1 minute');
        print($data);
    }

    /**
     *   Need to say error because of old data
     */
    catch (Exception $e) {
        print($e);
    }
Exception: eminmuhammadi\HideMyData\decrypt:: - time limited for this keys please update time or generate new one. in [root-repo]\src\hidemydata.php:122 Stack trace: #0 [root-repo]\service\date-decrypt.example.php(14): eminmuhammadi\HideMyData\HideMyData->decrypt('QTRmOGpVMml6MDN...', '1 minute') #1 {main}

NOTE !!! You need to update text because of old time limitation. When time is fresh then it will be like

HideMyData

Ciphers List

[
    {
        "0": "aes-128-cbc",
        "1": "aes-128-cbc-hmac-sha1",
        "2": "aes-128-cbc-hmac-sha256",
        "3": "aes-128-ccm",
        "4": "aes-128-cfb",
        "5": "aes-128-cfb1",
        "6": "aes-128-cfb8",
        "7": "aes-128-ctr",
        "9": "aes-128-gcm",
        "10": "aes-128-ocb",
        "11": "aes-128-ofb",
        "12": "aes-128-xts",
        "13": "aes-192-cbc",
        "14": "aes-192-ccm",
        "15": "aes-192-cfb",
        "16": "aes-192-cfb1",
        "17": "aes-192-cfb8",
        "18": "aes-192-ctr",
        "20": "aes-192-gcm",
        "21": "aes-192-ocb",
        "22": "aes-192-ofb",
        "23": "aes-256-cbc",
        "24": "aes-256-cbc-hmac-sha1",
        "25": "aes-256-cbc-hmac-sha256",
        "26": "aes-256-ccm",
        "27": "aes-256-cfb",
        "28": "aes-256-cfb1",
        "29": "aes-256-cfb8",
        "30": "aes-256-ctr",
        "32": "aes-256-gcm",
        "33": "aes-256-ocb",
        "34": "aes-256-ofb",
        "35": "aes-256-xts",
        "36": "aria-128-cbc",
        "37": "aria-128-ccm",
        "38": "aria-128-cfb",
        "39": "aria-128-cfb1",
        "40": "aria-128-cfb8",
        "41": "aria-128-ctr",
        "43": "aria-128-gcm",
        "44": "aria-128-ofb",
        "45": "aria-192-cbc",
        "46": "aria-192-ccm",
        "47": "aria-192-cfb",
        "48": "aria-192-cfb1",
        "49": "aria-192-cfb8",
        "50": "aria-192-ctr",
        "52": "aria-192-gcm",
        "53": "aria-192-ofb",
        "54": "aria-256-cbc",
        "55": "aria-256-ccm",
        "56": "aria-256-cfb",
        "57": "aria-256-cfb1",
        "58": "aria-256-cfb8",
        "59": "aria-256-ctr",
        "61": "aria-256-gcm",
        "62": "aria-256-ofb",
        "63": "bf-cbc",
        "64": "bf-cfb",
        "66": "bf-ofb",
        "67": "camellia-128-cbc",
        "68": "camellia-128-cfb",
        "69": "camellia-128-cfb1",
        "70": "camellia-128-cfb8",
        "71": "camellia-128-ctr",
        "73": "camellia-128-ofb",
        "74": "camellia-192-cbc",
        "75": "camellia-192-cfb",
        "76": "camellia-192-cfb1",
        "77": "camellia-192-cfb8",
        "78": "camellia-192-ctr",
        "80": "camellia-192-ofb",
        "81": "camellia-256-cbc",
        "82": "camellia-256-cfb",
        "83": "camellia-256-cfb1",
        "84": "camellia-256-cfb8",
        "85": "camellia-256-ctr",
        "87": "camellia-256-ofb",
        "88": "cast5-cbc",
        "89": "cast5-cfb",
        "91": "cast5-ofb",
        "92": "chacha20",
        "93": "chacha20-poly1305",
        "111": "id-aes128-CCM",
        "112": "id-aes128-GCM",
        "113": "id-aes128-wrap",
        "114": "id-aes128-wrap-pad",
        "115": "id-aes192-CCM",
        "116": "id-aes192-GCM",
        "117": "id-aes192-wrap",
        "118": "id-aes192-wrap-pad",
        "119": "id-aes256-CCM",
        "120": "id-aes256-GCM",
        "121": "id-aes256-wrap",
        "122": "id-aes256-wrap-pad",
        "124": "idea-cbc",
        "125": "idea-cfb",
        "127": "idea-ofb",
        "137": "seed-cbc",
        "138": "seed-cfb",
        "140": "seed-ofb",
        "141": "sm4-cbc",
        "142": "sm4-cfb",
        "143": "sm4-ctr",
        "145": "sm4-ofb"
    },
    {
        "36": "aes128",
        "37": "aes128-wrap",
        "38": "aes192",
        "39": "aes192-wrap",
        "40": "aes256",
        "41": "aes256-wrap",
        "69": "aria128",
        "70": "aria192",
        "71": "aria256",
        "72": "bf",
        "77": "blowfish",
        "99": "camellia128",
        "100": "camellia192",
        "101": "camellia256",
        "102": "cast",
        "103": "cast-cbc",
        "146": "idea",
        "164": "seed",
        "169": "sm4"
    }
]

Test

composer run-scripts test

Changelogs

  • v2.0.1

    • Composer package published
  • v2.0.0

  • v1.3.1

    • Added Array mode.
    • Some bugs fixed.
  • v1.3.0

    • Added Test Cases test/.
    • Some bugs fixed.
  • v1.2.0

  • v1.1.1

    • Docblocks generated.
    • Created new directory for tests

Authors

See also the list of contributors who participated in this project.

License

This project is licensed under the MIT License - see the LICENSE file for details