Skip to content

magnogtsouza/LocalData

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

A biblioteca LocalData é uma biblioteca .NET Standard 2.0 que fornece uma classe DataFile para gerenciar arquivos de dados criptografados.

-> https://www.nuget.org/packages/LocalData

Uso da biblioteca Para usar a biblioteca LocalData, você precisa adicionar a referência ao seu projeto e importar o namespace LocalData no seu código.

using LocalData;

DataFile A classe DataFile é a principal classe da biblioteca e fornece métodos para armazenar e recuperar dados criptografados em um arquivo. A classe possui os seguintes construtores:

Construtor sem parâmetros

public DataFile()

O construtor padrão cria um arquivo criptografado chamado "date.bin" na pasta atual do aplicativo e usa a senha "A-32-CHARACTER-PASSWORD-!@#$%¨&*" e o IV "16CHARACTERPASSW" para criptografar os dados.

Construtor com parâmetros

public DataFile(string filePath, string key, string iv, string customPrefix = null)

Este construtor cria um arquivo criptografado com o caminho filePath e usa a chave key e o IV iv para criptografar os dados. O parâmetro customPrefix é opcional e define o prefixo usado para todas as variáveis armazenadas no arquivo.

Métodos A classe DataFile fornece os seguintes métodos:

Clear(): Apaga o arquivo criptografado.

VerifyExistCFG(string variable): Verifica se uma variável com o nome especificado existe no arquivo criptografado.

LoadCfg(string variable, T defaultValue): Carrega o valor de uma variável com o nome especificado do arquivo criptografado. Se a variável não existir, retorna o valor padrão especificado em defaultValue.

SaveCfg(string variable, T value): Salva o valor especificado em value para uma variável com o nome especificado em variable.

GetAllVariableNames(): Retorna um objeto IEnumerable que contém o nome de todas as variáveis armazenadas no arquivo criptografado.

CryptFileHandler A classe CryptFileHandler é usada internamente pela classe DataFile para criptografar e descriptografar dados. Você não precisa usar essa classe diretamente em seu código.

Algumas restrições do uso da biblioteca e do código apresentado incluem:

1 - A classe CryptFileHandler usa criptografia AES com uma chave de 32 bytes e um vetor de inicialização de 16 bytes. Se esses valores forem alterados ou definidos incorretamente, a criptografia pode falhar ou ser menos segura. É necessario que tenha a primeira chave tenha 32 caracteres e a segunda 16.

2 - O código assume que o arquivo de dados será armazenado no disco em um local específico. Se o caminho ou nome do arquivo for alterado, o código pode não funcionar corretamente.

3 -O código não tem mecanismos de segurança para impedir o acesso ou a edição não autorizada dos dados armazenados.

4 - A classe DataFile não é thread-safe e não fornece mecanismos de bloqueio ou exclusão mútua para garantir que apenas uma thread acesse o arquivo de dados ao mesmo tempo.

5 - A classe DataFile permite que os usuários armazenem qualquer tipo de objeto como um valor, mas isso pode causar problemas de serialização ou desserialização se o tipo de objeto não for serializável ou não puder ser convertido de volta para o tipo original.

6 - O código não tem tratamento de exceções para lidar com erros ou exceções que podem ocorrer durante a execução, o que pode levar a um comportamento inesperado ou falhas no aplicativo que usa essa biblioteca.

7 - Não é recomendado trabalhar com muitos volumes de dados pois a biblioteca salva tudo diretamente no armazenamento do diposito.

8 - Não ultilize quebras de linhas nas string, o caractere \n é ultilizado para a separação de dados.

--> Global usage example <--

using System;
using LocalData;
namespace Exemplo
{
    internal class Test
    {
        private static void Main(string[] args)
        {
            DataFile dataFile = new DataFile();
            //save string
            dataFile.SaveCfg("connectionstring", "Server=127.0.0.1;Database=myDataBase;Uid=Root;Pwd=abc123;");
            //load string
            string cnn = dataFile.LoadCfg("connectionstring", "");

            //other types of data
            int time = dataFile.LoadCfg<int>("time", 15);
            bool isTest = dataFile.LoadCfg<bool>("isTest", false);

            //The second parameter serves as the default value if the data has never been saved.
            //If the data has never been saved, the default value will be saved.
            //If the data has been saved, the default value will be ignored.
            if (dataFile.LoadCfg<bool>("FirstOpen", true))
            {
                dataFile.SaveCfg<bool>("FirstOpen", false);
                Console.WriteLine("First time");
            }
            else
            {
                Console.WriteLine("Not First time");
            }
            Console.ReadKey();
        }
    }
}

About

A simple library for saving local data to an encrypted file.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages