Pergunta

Eu migrou meu banco de dados no meu dispositivo móvel longe de VistaDB porque é muito lento. Agora estou usando protobuf em vez de criar uma série de arquivos simples num cartão de memória, o único problema é que há, obviamente, nenhuma criptografia.

Qual o método de criptografia funciona melhor com Protobuf? Estou basicamente a serialização de um conjunto de entidades de dados para um arquivo, em seguida, desserializar da parte de trás do arquivo em minhas coleções. Eu acho que o melhor lugar para colocar a encriptação seria na FileStream na leitura / gravação.

Os dados conterá números NI, nomes e endereços, e isso tem de ser seguro. Qualquer idéia de alguém?

Foi útil?

Solução

Eu acho que você está no caminho certo. Você deve apenas ser capaz de fazer algo como:

ICryptoTransform encryptor = ...
Stream encStream = new CryptoStream(outputFileStream, encryptor, CryptoStreamMode.Write);
Serializer.Serialize(encStream, obj);
encStream.FlushFinalBlock()
encStream.Close();

ICryptoTransform decryptor = ...
Stream decStream = new CryptoStream(inputputFileStream, decryptor, CryptoStreamMode.Read);
Serializer.Deserialize<Type>(decStream);
decStream.FlushFinalBlock()
decStream.Close();

Para as noções básicas de estrutura de criptografia do .NET (incluindo a forma de obter os objetos ICryptoTransform, consulte outras questões como Qual é a melhor maneira de criptografar seqüências curtas em .NET? .

Outras dicas

Outra opção é realmente criptografar toda a pasta onde os dados são armazenados através da instalação de um sistema de largura arquivo de filtro do sistema de . As vantagens são que:

  1. O seu código de aplicativo é agnóstica para a criptografia e a criptografia será feito em código nativo.
  2. Uma vez que a criptografia é feita em código nativo, ele vai ser mais rápido
  3. Uma vez que a criptografia não está dentro código gerenciado, é muito mais difícil de fazer engenharia reversa e descobrir suas chaves, sais, etc.

Claro que a desvantagem (para aqueles que não escreva C de qualquer maneira) é que você não pode escrever em C #.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top