/
githubmirror
/
magento2
Обзор
Документация
Войти
/
githubmirror
/
magento2
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
2.4-develop
lib/internal/Magento/Framework/Encryption/Adapter/SodiumChachaIetf.php
75 строк
2 KB
Alexandra Zota
ACP2E-4019: CE copyright updates for 2.4.9-beta1
22 окт 2025, 17:47
22 окт 2025, 17:47
1b769b7
Код
Авторство
О чём код?
<?php /** * Copyright 2018 Adobe * All Rights Reserved. */ 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 : ''; } }