<?php

namespace App\Packages\Core\Service;

use phpseclib\Crypt\RSA;

/**
 * Class CryptService
 * @package App\Packages\Core\Service
 */
class CryptService
{
    /**
     * @param $string
     * @return string
     */
    public static function encryptStringBase64($string)
    {
        return base64_encode(self::encryptString($string));
    }

    /**
     * @param $string
     *
     * @return string
     */
    public static function encryptString($string)
    {
        $publicKey = file_get_contents(base_path() . '/keys/public.key');

        $rsa = new RSA();
        $rsa->loadKey($publicKey);
        $rsa->setEncryptionMode(RSA::ENCRYPTION_PKCS1);

        $cipherText = $rsa->encrypt($string);

        return $cipherText;
    }

    /**
     * @param $string
     *
     * @return string
     */
    public static function decryptString($string)
    {
        $privateKey = file_get_contents(base_path() . '/keys/private.key');

        $rsa = new RSA();
        $rsa->loadKey($privateKey);
        $rsa->setEncryptionMode(RSA::ENCRYPTION_PKCS1);

        return $rsa->decrypt($string);
    }
}
