nmure/encryptor-bundle
A Symfony bundle that provides encryption and decryption services for securing sensitive data in your applications. Integrates with Symfony's service container to make encrypting values, files, or configuration straightforward within your project.
Architecture fit. There is a fundamental mismatch to flag first: nmure/encryptor-bundle is a Symfony Bundle, not a Laravel package. It ships a Bundle class, DI extension, and service definitions targeting Symfony's container — none of which Laravel's service container or package discovery can consume. Adopting it in a Laravel codebase means either (a) installing Symfony's DI/config components alongside Laravel's container purely to boot a wrapper, or (b) bypassing the bundle entirely and using the underlying nmure/encryptor library directly. The bundle is a thin configuration layer; its only value would be pre-wired service definitions for a framework you are not using.
Integration feasibility. Technically possible, practically unjustified. The underlying nmure/encryptor library could be pulled in via Composer and bound into a Laravel service provider in an afternoon — but at that point you are writing 100% of the integration surface yourself and inheriting 100% of the maintenance burden for an unmaintained crypto dependency. Composer constraint resolution is the immediate blocker: a 2017-era bundle almost certainly pins symfony/* to ^2.7/^3.0 and PHP to ^5.6 || ^7.0, which will conflict with any modern Laravel install (Symfony 6/7 components, PHP 8.1+). Expect composer require to fail or require --ignore-platform-reqs and dependency aliasing — a red flag for a cryptographic component.
Technical risk. High, and concentrated in the worst possible domain. Cryptography is the one area where "small, stable, boring" is a virtue only if it is audited and patched. This package has 2 stars, 0 dependents, no release since December 2017, and no visible security disclosure path. That means zero third-party review, zero CVE monitoring, and no upstream fix if the underlying cipher usage (padding, IV handling, MAC-then-encrypt ordering, key derivation) is found deficient. Modern PHP defaults have moved (OpenSSL error behavior, random_bytes, libsodium availability), and a 2017 crypto wrapper is unlikely to reflect current guidance. Silent failure modes — openssl_decrypt returning false instead of throwing — are a realistic risk with code of this vintage, and in a Laravel app that surfaces as corrupted user data rather than a clean exception.
Key questions. What primitives does the underlying library actually use (AES-CBC vs. GCM, RSA, libsodium), and is it authenticated encryption? Where do keys live, and is there a rotation story? Does it derive keys from a passphrase, and with what KDF and iteration count? Has anyone audited the cipher/MAC composition? Is there a maintained fork? And most importantly: what requirement does this satisfy that Laravel's first-party Crypt facade (AES-256-GCM/CBC with HMAC, key rotation via APP_PREVIOUS_KEYS) does not? If the answer is "none," the evaluation ends there.
Stack fit. Poor for Laravel. Laravel already provides Illuminate\Encryption\Encrypter with authenticated encryption, key rotation, and framework-managed configuration. For anything the facade does not cover — asymmetric encryption, envelope encryption, field-level encryption at rest — the mature Laravel-ecosystem choices are defuse/php-encryption, paragonie/halite, or paragonie/sodium_compat. Any of these is a better fit than a Symfony bundle with two stars and a 2017 release date.
Migration path. Do not install the bundle. If a specific capability in nmure/encryptor is genuinely required and unavailable elsewhere, the correct move is: fork the library (not the bundle), pin it in a private VCS or path repository, add PHP 8 / Laravel 10–11 compatibility, wrap it behind a first-party EncryptionService interface, and bind that interface in a service provider. This preserves the option to swap implementations later and keeps the framework coupling at zero.
Compatibility. Assume incompatible until proven otherwise. The realistic path to even loading it requires a composer.json patch relaxing Symfony and PHP constraints, followed by a compatibility test matrix across your supported PHP versions. Because it is a crypto component, "it loaded and one round-trip test passed" is not sufficient validation — you would need known-answer tests and negative tests (tampered ciphertext, truncated payload, wrong key) before it touches production data.
Sequencing. (1) Requirements spike: document exactly what the encryption requirement is and confirm the first-party facade cannot meet it — this likely closes the ticket. (2) If it survives, evaluate the underlying library in isolation with a throwaway Composer project, not inside your app. (3) Security review of the cipher composition before any integration code. (4) Adapter behind an interface, with a feature flag and dual-write/dual-read migration if existing ciphertext must be preserved. (5) Full cutover only after a decrypt-backfill validation pass. Given the score of 0.01, steps 1–2 are expected to terminate the evaluation.
Maintenance. This becomes a permanent owned liability on day one. There is no upstream to send a PR to with any expectation of a response; you are the maintainer. Budget for PHP-version bumps, OpenSSL behavior changes, and Composer conflict resolution every time you upgrade the framework — costs that are invisible in the initial integration estimate and compound over the 3–5 year life of the service.
Support. No vendor, no active maintainer, no documented support channel, and a bus factor of effectively zero. Internal onboarding requires reading the source, because the bundle's documentation is a README from 2017. In an incident, the on-call engineer is debugging unfamiliar third-party crypto under pressure with no upstream escalation path.
Scaling. Cryptography is CPU-bound and rarely the throughput bottleneck at typical application volumes, so this is not the primary concern — though per-request encryption of large payloads or high-volume field-level encryption does warrant benchmarking. The real scaling risk is key management: the library predates modern envelope-encryption and KMS patterns, so scaling to multi-region or multi-tenant key isolation would likely require work the wrapper was never designed for.
Failure modes. The dangerous ones are quiet: false returned instead of an exception, decryption succeeding with corrupted padding, IV reuse across encryptions, or key rotation handled by ad-hoc scripts. Each manifests as data loss or a confidentiality breach rather than a clean 500. Add supply-chain risk: a dormant package with near-zero adoption is a plausible typosquat or account-takeover target, and there is no security advisory feed to notify you.
Ramp-up. Trivially low for the API surface and very high for the governance surface. A developer can learn the interface in an hour. Convincing a security reviewer, an auditor, or a compliance function that a two-star, eight-year-dormant Symfony bundle is the right home for production secrets is the expensive part — and in most organizations that conversation ends the initiative regardless of the technical merits.
Recommendation. Decline. The package fails the baseline bar for a cryptographic dependency: no maintenance, no adoption, no audit trail, and a framework mismatch with the target stack. Redirect the requirement to Laravel's built-in encrypter or a maintained, audited PHP crypto library.
How can I help you explore Laravel packages today?