envms/osseus

View on GitHub
src/Security/Hash.php

Summary

Maintainability
A
0 mins
Test Coverage
<?php

namespace Envms\Osseus\Security;

/**
 * Class Hash
 */
class Hash
{
    const GOST = 'gost';
    const HAVAL256 = 'haval256,5';
    const MD5 = 'md5';
    const SHA1 = 'sha1';
    const SHA256 = 'sha256';
    const SHA3_256 = 'sha3-256';
    const SHA3_512 = 'sha3-512';
    const WHIRLPOOL = 'whirlpool';

    const PASS_BCRYPT = '2y';
    const PASS_ARGON2I = 'argon2i';
    const PASS_ARGON2ID = 'argon2id';

    /** @var string $secret */
    protected $secret;

    /**
     * Hash constructor
     *
     * @param string $secret
     */
    public function __construct(string $secret)
    {
        $this->secret = $secret;
    }

    /**
     * @param mixed  $data
     * @param string $salt
     * @param string $algorithm
     *
     * @return string
     */
    public function fromData($data, string $salt = '', $algorithm = self::SHA3_512): string
    {
        return hash($algorithm, "{$this->secret}{$data}{$salt}");
    }
}