![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/old/vendor/magento/framework/Encryption/Adapter/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ declare(strict_types=1); namespace Magento\Framework\Encryption\Adapter; /** * Sodium adapter for encrypting and decrypting strings */ class SodiumChachaIetf implements EncryptionAdapterInterface { /** * @var string */ private $key; /** * Sodium constructor. * @param string $key */ public function __construct( string $key ) { $this->key = $key; } /** * Encrypt a string * * @param string $data * @return string string * @throws \SodiumException */ public function encrypt(string $data): string { $nonce = random_bytes(SODIUM_CRYPTO_AEAD_CHACHA20POLY1305_IETF_NPUBBYTES); $cipherText = sodium_crypto_aead_chacha20poly1305_ietf_encrypt( (string)$data, $nonce, $nonce, $this->key ); return $nonce . $cipherText; } /** * Decrypt a string * * @param string $data * @return string */ public function decrypt(string $data): string { $nonce = mb_substr($data, 0, SODIUM_CRYPTO_AEAD_CHACHA20POLY1305_IETF_NPUBBYTES, '8bit'); $payload = mb_substr($data, SODIUM_CRYPTO_AEAD_CHACHA20POLY1305_IETF_NPUBBYTES, null, '8bit'); try { $plainText = sodium_crypto_aead_chacha20poly1305_ietf_decrypt( $payload, $nonce, $nonce, $this->key ); } catch (\SodiumException $e) { $plainText = ''; } return $plainText !== false ? $plainText : ''; } }