A regra geral é que tudo o que você dá ao usuário não é mais seu. Quando você criptografa os dados, você mantém a chave de criptografia em seu aplicativo e a chave pode ser extraída. A única solução relativamente confiável é colocar a chave no dispositivo de hardware (USB cryptotoken), mas isso não é aceitável em muitos cenários. E é relativamente confiável, já que os dados podem ser capturados e existem ataques em alguns tokens USB.
Se você quiser apenas proteger os dados do Joe médio, poderá usar o CEP criptografado como um contêiner (a criptografia dupla afastaria mais usuários). E você precisa substituir o algoritmo - Blowfish é realmente muito lento. AES seria mais rápido.
Se a quantidade de dados for grande, é melhor empregar a criptografia-criptografia on-the-fly, ou seja, você deve criptografar ou descriptografar apenas os blocos de dados que são usados e não o fluxo completo. Isso torna a tarefa mais sofisticada. Ou você pode usar um sistema de arquivos virtual que suporta criptografia no nível inferior (o nosso Solid File System é um dos exemplos e existem alguns outros).