1.2.0 • Published 5 months ago
secure-object-crypto v1.2.0
secure-object-crypto
Uma biblioteca Node.js simples e segura para encriptar e decriptar objetos JavaScript.
Características
- Encriptação AES-256-CBC de objetos JavaScript
- Uso de PBKDF2 para derivação segura de chaves
- Suporte para salvar e carregar chaves de arquivos
- API simples e direta
- Sem dependências externas (usa apenas módulos nativos do Node.js)
Instalação
npm install secure-object-crypto
Uso Básico
const SecureObjectCrypto = require('secure-object-crypto');
// Gerar uma nova chave secreta
const { chave, sal } = SecureObjectCrypto.gerarSecret('minha-senha-secreta');
// Objeto que queremos encriptar
const meuObjeto = {
id: 1234,
nome: "Dados confidenciais",
valores: [10, 20, 30],
ativo: true
};
// Encriptar o objeto
const dadosEncriptados = SecureObjectCrypto.encriptar(meuObjeto, chave);
console.log('Dados encriptados:', dadosEncriptados);
// Decriptar o objeto
const objetoDecriptado = SecureObjectCrypto.decriptar(dadosEncriptados, chave);
console.log('Objeto decriptado:', objetoDecriptado);
API
gerarSecret(chaveMestre, [sal])
Gera uma chave secreta baseada em uma senha mestre.
chaveMestre
: String com a senha fornecida pelo usuáriosal
: (Opcional) Buffer com sal para a geração da chave- Retorna: Objeto
{ chave, sal }
encriptar(objeto, secret)
Encripta um objeto JavaScript usando uma chave secreta.
objeto
: Objeto a ser encriptadosecret
: Buffer com a chave secreta- Retorna: String em base64 com o objeto encriptado
decriptar(dadosEncriptados, secret)
Decripta um objeto previamente encriptado.
dadosEncriptados
: String em base64 com o objeto encriptadosecret
: Buffer com a chave secreta- Retorna: Objeto JavaScript original
salvarSecret(chave, sal, [arquivo])
Salva a chave e o sal em um arquivo.
chave
: Buffer com a chave secretasal
: Buffer com o salarquivo
: (Opcional) Nome do arquivo (padrão: 'secret.key')- Retorna: Nome do arquivo onde a chave foi salva
carregarSecret([arquivo])
Carrega a chave e o sal de um arquivo.
arquivo
: (Opcional) Nome do arquivo (padrão: 'secret.key')- Retorna: Objeto
{ chave, sal }
encriptarParaArquivo(objeto, secret, [arquivo])
Encripta um objeto e salva em um arquivo.
objeto
: Objeto a ser encriptadosecret
: Buffer com a chave secretaarquivo
: (Opcional) Nome do arquivo (padrão: 'dados_encriptados.enc')- Retorna: Nome do arquivo onde os dados foram salvos
decriptarDeArquivo(secret, [arquivo])
Lê dados encriptados de um arquivo e decripta.
secret
: Buffer com a chave secretaarquivo
: (Opcional) Nome do arquivo (padrão: 'dados_encriptados.enc')- Retorna: Objeto decriptado
Exemplos
Salvando e carregando a chave
const SecureObjectCrypto = require('secure-object-crypto');
// Gerar e salvar uma nova chave
const { chave, sal } = SecureObjectCrypto.gerarSecret('minha-senha-secreta');
SecureObjectCrypto.salvarSecret(chave, sal, 'minha_chave.key');
// Carregar a chave posteriormente
const { chave: chaveCarregada } = SecureObjectCrypto.carregarSecret('minha_chave.key');
// Usar a chave carregada
const meuObjeto = { id: 123, dados: "Informação confidencial" };
const dadosEncriptados = SecureObjectCrypto.encriptar(meuObjeto, chaveCarregada);
Encriptando para um arquivo
const SecureObjectCrypto = require('secure-object-crypto');
// Gerar uma chave
const { chave } = SecureObjectCrypto.gerarSecret('senha-segura');
// Encriptar um objeto para um arquivo
const meuObjeto = {
usuarios: [
{ id: 1, nome: "Alice", acesso: "admin" },
{ id: 2, nome: "Bob", acesso: "user" }
],
configuracoes: {
maxTentativas: 3,
timeout: 3600
}
};
// Salvar no arquivo
SecureObjectCrypto.encriptarParaArquivo(meuObjeto, chave, 'config_segura.enc');
// Mais tarde, carregar e decriptar
const objetoDecriptado = SecureObjectCrypto.decriptarDeArquivo(chave, 'config_segura.enc');
console.log(objetoDecriptado);
Segurança
Esta biblioteca implementa:
- Encriptação AES-256-CBC
- Derivação de chave PBKDF2 com 100.000 iterações
- Vetor de inicialização (IV) aleatório para cada encriptação
- Armazenamento seguro de chaves
Licença
MIT