L'interface EncryptionServiceInterface est la sentinelle de la vie privée dans Synapse Core. Elle permet de chiffrer automatiquement les conversations et les données sensibles en base de données.
| Méthode | Entrée | Sortie | Rôle |
|---|---|---|---|
encrypt(string $data) |
Texte brut | string |
Transforme le message en suite de caractères chiffrée. |
decrypt(string $data) |
Texte chiffré | string |
Restaure le message original pour l'affichage ou le LLM. |
isEncrypted(string $data) |
Texte | bool |
Détecte si une donnée est déjà chiffrée (prévention). |
=== "SodiumEncryption.php"
```php
namespace App\Synapse\Security;
use ArnaudMoncondhuy\SynapseCore\Contract\EncryptionServiceInterface;
class SodiumEncryption implements EncryptionServiceInterface
{
public function __construct(private string $key) {}
public function encrypt(string $data): string
{
$nonce = random_bytes(SODIUM_CRYPTO_SECRETBOX_NONCEBYTES);
$cipher = sodium_crypto_secretbox($data, $nonce, $this->key);
return base64_encode($nonce . $cipher);
}
public function decrypt(string $data): string
{
$decoded = base64_decode($data);
$nonce = substr($decoded, 0, SODIUM_CRYPTO_SECRETBOX_NONCEBYTES);
$cipher = substr($decoded, SODIUM_CRYPTO_SECRETBOX_NONCEBYTES);
return sodium_crypto_secretbox_open($cipher, $nonce, $this->key);
}
public function isEncrypted(string $data): bool
{
return str_ends_with($data, '=='); // Détection simpliste
}
}
```
[!CAUTION] Gestion des clés : Ne stockez JAMAIS votre clé de chiffrement dans le code source. Utilisez des variables d'environnement (
.env.local) ou un coffre-fort de secrets (Vault).
ConversationManager. Vous n'avez pas à gérer le chiffrement manuellement dans vos contrôleurs.How can I help you explore Laravel packages today?