1.2.0 • Published 5 months ago

secure-object-crypto v1.2.0

Weekly downloads
-
License
MIT
Repository
github
Last release
5 months ago

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ário
  • sal: (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 encriptado
  • secret: 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 encriptado
  • secret: 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 secreta
  • sal: Buffer com o sal
  • arquivo: (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 encriptado
  • secret: Buffer com a chave secreta
  • arquivo: (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 secreta
  • arquivo: (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

1.2.0

5 months ago

1.1.0

5 months ago

1.0.0

5 months ago