mirror of
https://github.com/Karaka-Management/Resources.git
synced 2026-01-11 05:18:40 +00:00
58 lines
1.3 KiB
PHP
58 lines
1.3 KiB
PHP
<?php
|
|
|
|
namespace PayPal\Security;
|
|
|
|
/**
|
|
* Class Cipher
|
|
*
|
|
* Helper class to encrypt/decrypt data with secret key
|
|
*
|
|
* @package PayPal\Security
|
|
*/
|
|
class Cipher
|
|
{
|
|
private $secretKey;
|
|
|
|
/**
|
|
* Fixed IV Size
|
|
*/
|
|
const IV_SIZE = 16;
|
|
|
|
public function __construct($secretKey)
|
|
{
|
|
$this->secretKey = $secretKey;
|
|
}
|
|
|
|
/**
|
|
* Encrypts the input text using the cipher key
|
|
*
|
|
* @param $input
|
|
* @return string
|
|
*/
|
|
public function encrypt($input)
|
|
{
|
|
// Create a random IV. Not using mcrypt to generate one, as to not have a dependency on it.
|
|
$iv = substr(uniqid("", true), 0, Cipher::IV_SIZE);
|
|
// Encrypt the data
|
|
$encrypted = openssl_encrypt($input, "AES-256-CBC", $this->secretKey, 0, $iv);
|
|
// Encode the data with IV as prefix
|
|
return base64_encode($iv . $encrypted);
|
|
}
|
|
|
|
/**
|
|
* Decrypts the input text from the cipher key
|
|
*
|
|
* @param $input
|
|
* @return string
|
|
*/
|
|
public function decrypt($input)
|
|
{
|
|
// Decode the IV + data
|
|
$input = base64_decode($input);
|
|
// Remove the IV
|
|
$iv = substr($input, 0, Cipher::IV_SIZE);
|
|
// Return Decrypted Data
|
|
return openssl_decrypt(substr($input, Cipher::IV_SIZE), "AES-256-CBC", $this->secretKey, 0, $iv);
|
|
}
|
|
}
|