key === '') { return $value; } $encrypter = service('encrypter'); $encrypted = $encrypter->encrypt($value); return 'ENC:' . base64_encode($encrypted); } catch (Throwable) { return $value; } } } if (! function_exists('pii_decrypt')) { function pii_decrypt(?string $value): string { if ($value === null || $value === '') { return ''; } if (strpos($value, 'ENC:') !== 0) { return $value; } try { $config = config('Encryption'); if ($config->key === '') { return $value; } $encrypter = service('encrypter'); $raw = base64_decode(substr($value, 4), true); if ($raw === false) { return $value; } return $encrypter->decrypt($raw); } catch (Throwable) { return $value; } } } /** 암호화 대상 개인정보 필드 (member 테이블) */ if (! defined('PII_ENCRYPTED_FIELDS')) { define('PII_ENCRYPTED_FIELDS', ['mb_phone', 'mb_email']); }