PGP tiene un método para manejar esto que (en su caso) sería algo como:
Para proteger los datos:
- La aplicación conoce la clave pública del usuario (Ku)
- La aplicación genera "Hola mundo".
- La aplicación genera una buena clave de cifrado simétrica (Ks)
- La aplicación usa Ks para cifrar "Hola mundo"
- La aplicación hace una copia de Ks que está cifrada con Ku
- La aplicación hace una copia de Ks que está cifrada con la clave pública de la aplicación (Ka)
- La aplicación almacena cadenas cifradas y ambas contraseñas cifradas
Para recuperar los datos:
- La aplicación entrega la copia de Ks cifrada con Ku
- El usuario lo descifra utilizando su clave privada
- La aplicación utiliza los K descifrados para descifrar los datos y mostrarlos al usuario.
Debido a que hay una copia de Ks cifrada con Ka, la aplicación puede descifrar los datos sin el usuario siempre que la clave privada de la aplicación esté disponible.
EDITAR:
Como @CBHacking se indica en los comentarios, es altamente aconsejable que encuentre un sistema criptográfico bien probado que se adapte a sus necesidades. Roll-your-own crypto es una manera fácil de cometer errores embarazosos. Hablando como alguien que implementó el primer almacenamiento de contraseñas sin texto en mi empresa, hay muchas opciones creadas por personas que entienden esto mejor que nosotros.