these are my suggestions:
1. make /share with us your class design in UML (or similar) diagrams
2. separate your class in two:
a) encrypt class (maybe abstract class, or "bridge" or "wrapper") [1]
b) hide class (maybe abstract class, "bridge" or "wrapper")
[1] GOF:
Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides
Design Patterns - elements for reusable object-oriented software.
phppatterns.com/
the idea: (use "courier new" font to see e.g. copy-paste to a text editor)
*----------*
|encrypt |
*----------*
|encrypt() |
|decrypt() |
|get_text()|
|set_text()|
|a_func() |
*----.-----*
/_\
| (generalization)
|
*---------------*
|concreteEncrypt|
*---------------*
|encrypt() |
|decrypt() |
|get_text() |
|set_text() |
|a_func() |
*---------------*
similar to hide (hider, concreteHider) and operations
why:
this approach isolates the service and concrete implementation
you can use any encryption method class that fits with your
abstract interface (mine is only an example) you just defined
in "encrypt" (that's the methods)
in "hide" and "concreteHide" you can use a TextHider
a MSWordHider, an GIF hider, werever you want
and... only one thing else... use "compressor" and "concreteCompressor"
if you want to isolate the compression process to its implementation
(maybe a gzCompressor, a bz2Compressor, a rarComrpessor, a MyCompressor)
and let community enhance your class in this way ¿what do you think?