Segurança é algo obtida pela competência da pessoa na área, não pela tecnologia. As maiores furadas de tecnologia são praticadas em banco de dados.
Algo em torno de 90% das perguntas sobre queries em bancos de dados postadas no Stack Overflow sofrem de SQL Injection. Mesmo você ensinando a pessoa, ela insiste em continuar fazendo daquele jeito. Várias respostas ensinam a fazer do jeito errado. Muito do que tem postado na internet ensina a fazer de forma insegura. As pessoas simplesmente não ligam, só importa funcionar. Por isso, a maioria dos supervisores são usados como minions e seus "proprietários" nem sabem. Foi o tempo de zoar o servidor, dá pra ter ganhos escondendo a invasão.
Se já é difícil fazer certo em um banco de dados que te ajuda, imagine fazer seguro em arquivos flat. Nem que seja muito bom nisso quer ter esse trabalho todo e correr o risco de dar um deslize.
Criptografia nada tem a ver com segurança. Ela só permite que alguém que tem acesso ao servidor não tenha acesso aos dados por fora do meio padrão utilizado. Ou seja, ela não dá acesso para alguém ler o dado de forma direta. A criptografia não tornará nada seguro. Só o fato de achar isso é um bom motivo para não tentar fazer nada que envolva segurança sem ajuda especializada.
Todo mundo pode fazer como quiser, mas sofrerá as consequências. Pode ser que seja nenhuma porque está fazendo uma coisa boba. Mas se sofrer, depois não adianta reclamar. Pode andar em moto sem capacete a mais de 200 por hora e passar sinal vermelho, mas depois que morre... E muita gente faz isso, achando que não vai acontecer com ela.
É extremamente difícil fazer algo seguro por conta própria, até os melhores programadores do mundo não querem ter esse fardo e usam o que tem pronto. Em muitos casos sem ajuda do sistema operacional fica bem difícil fazer algo. Mesmo com ele é possível burlar quando alguém tem acesso ao servidor.
Então o segredo é não dar acesso ao servidor, se der a criptografia ajuda, mas não resolve, se quiserem mesmo ter acesso aos dados será possível. Eu nunca criptografei nada em meus servidores, exceto senhas, com controle fornecido pelos bancos de dados, já que é uma tarefa muito complicada de fazer certo, porque eu sei que os dados não são tão valiosos assim, e se alguém quiser e tiver acesso ao servidor ela conseguirá o que quer. Minha preocupação é fazer com que o servidor não seja invadido.
Chave segura é estar em outro local. Ou seja, cada acesso precisará da chave vinda de fonte externa. E a comunicação precisa ser segura. Chave no mesmo local da porta, embaixo do tapete, não é segurança. Qualquer método será ruim. Isso vale para chave de banco de dados. Quase todo mundo tá muito preocupado com seus dados, mas a senha do DB tá lá no script PHP. Não é o fim do mundo fazer isso, mas aceite que seus dados estão desprotegidos, que a segurança está no servidor, não nos dados em si.
Se for uma aplicação local a segurança ficará limitada a não ser que dependa de algo que só usuário sabe para acessar. Ou seja, não é questão de onde coloca que dá segurança, o processo é extremamente mais complexo. A aplicação local é insegura por natureza. É como você parar o carro na garagem do bandido e querer impedir que ele entre lá dentro. Você pode dificultar, mas não impedir. Eu não vou perder meu tempo em dificultar algo que eu sei que será burlado. Mas se for fazer algo assim, farei com algo pronto feito por gente muito mais competente que eu. Eu só tenho 40 anos na área sem ter me especializado em segurança. Eu não sirvo para isso. E reconhecer isso é o melhor que posso fazer.
Eu sei fazer um banco de dados, até tenho um projeto de um, mas por diversão, seriamente eu prefiro usar um banco de dados pronto.
Até porque o banco de dados serve para muita coisa útil. Mesmo para algo muito trivial que precise de quase nada, pode ser melhor usar um SQLite do que o arquivo direto.
Eu também não sou o maior fã de algumas coisas de bancos de dados, mas reconheço que ele é muito melhor que tentar reinventar a roda. Minha recomendação é começar a gostar um pouco mais deles, aprender a fundo e usar o que for mais adequado. Porque se precisa realmente de dados criptografados, o banco de dados é fundamental. Não recomendo fazer na mão nem se você for um especialista no assunto, mas aí você já saberia disso. Eu sou super fã de fazer por conta própria sempre que trouxer alguma vantagem e for mais simples, odeio as modinhas de ficar enfiando tecnologias desnecessárias a toa, sou muito crítico nisso, mas vai por mim, você não vai querer fazer o que pretende. Só use um arquivo se for a coisa mais simples do mundo. Até para arquivo de configuração tem casos que um banco de dados já começa a compensar.
Em resumo (ChatGPTei :D), não é criptografia que dá segurança. Criptografia funciona bem para transmissão de dados ou dificultar acesso indevido quando tem acesso local, só para ganhar tempo para estrago muito grande acontecer. Ela sozinha não serve para muita coisa.
Farei algo que muitos pedem para aprender a programar corretamente, gratuitamente. Para saber quando, me segue nas suas plataformas preferidas. Quase não as uso, não terá infindas notificações (links aqui).