Encryption::decrypt PHP Method

decrypt() public static method

Decrypted a string.
public static decrypt ( string $ciphertext ) : string
$ciphertext string
return string
    public static function decrypt($ciphertext)
    {
        if (empty($ciphertext)) {
            throw new Exception("the string to decrypt can't be empty");
        }
        if (!function_exists('openssl_cipher_iv_length') || !function_exists('openssl_decrypt')) {
            throw new Exception("Encryption function don't exists");
        }
        // generate key used for authentication using ENCRYPTION_KEY & HMAC_SALT
        $key = mb_substr(hash(self::HASH_FUNCTION, Config::get('ENCRYPTION_KEY') . Config::get('HMAC_SALT')), 0, 32, '8bit');
        // split cipher into: hmac, cipher & iv
        $macSize = 64;
        $hmac = mb_substr($ciphertext, 0, $macSize, '8bit');
        $iv_cipher = mb_substr($ciphertext, $macSize, null, '8bit');
        // generate original hmac & compare it with the one in $ciphertext
        $originalHmac = hash_hmac('sha256', $iv_cipher, $key);
        if (!self::hashEquals($hmac, $originalHmac)) {
            return false;
        }
        // split out the initialization vector and cipher
        $iv_size = openssl_cipher_iv_length(self::CIPHER);
        $iv = mb_substr($iv_cipher, 0, $iv_size, '8bit');
        $cipher = mb_substr($iv_cipher, $iv_size, null, '8bit');
        return openssl_decrypt($cipher, self::CIPHER, $key, OPENSSL_RAW_DATA, $iv);
    }

Usage Example

示例#1
0
 public static function getSessionId()
 {
     if (!isset($_COOKIE[static::$name])) {
         return null;
     }
     return Encryption::decrypt($_COOKIE[static::$name]);
 }
All Usage Examples Of Encryption::decrypt