Skip to content

SaveIntegrityUtility (pt)

Guilherme Sena edited this page Dec 11, 2024 · 1 revision

Essa é uma classe estática que fornece os métodos para embaralhar e desembaralhar bytes, e também para gerar uma hash SHA-256.

public static List ShuffleBytes(List originalBytes, int seed)

  • originalBytes: Lista dos bytes originais a serem embaralhados.
  • seed: Semente para ser usada no gerador de números aleatórios.

Esse método embaralha os bytes da seguinte maneira: Ele gera uma ordem de embaralhamento pelo método GetOrder() que retorna uma lista de números embaralhados, em seguida um laço for é rodado de acordo com a quantidade de bytes da lista, pegando cada posição de um byte que foi gerada pela lista de números embaralhados e adicionando em um array. Em seguida, retornando em uma lista de bytes.

Exemplo: Temos o seguinte texto que seriam nossos bytes: ABCDE e a nossa ordem gerada foi: 3 2 0 1 4

A posição original seria essa:

A B C D E

0 1 2 3 4

Passando pra um array de forma embaralhada:

D C A B E

3 2 0 1 4

public static List<byte> UnshuffleBytes(List<byte> shuffledBytes, int seed)

  • shuffledBytes: Lista dos bytes originais a serem deembaralhados.
  • seed: Semente que foi usada no gerador de números aleatórios.

Esse método desembaralha os bytes de acordo com a seed usada no embaralhamento. Se uma outra seed for usada, o desembaralhamento retornará a ordem errada.

public static string GetStringHash(string content, string salt)

  • content: Conteúdo a ser gerado uma hash.
  • salt: "Sal" a ser adicionado ao conteúdo.

Esse método retorna a hash do conteúdo junto com um "sal", deixando a hash mais única e dificultando a injeção de uma hash.

private static List<int> GetOrder(int bytesSize, int seed)

  • bytesSize: Quantidade de bytes.
  • seed: Semente a ser usada no gerador de números aleatórios.

Esse método gera inicialmente uma lista de números possíveis com base na quantidade bytes, em seguida ele vai movendo a posição gerada pra uma nova lista de números através de um laço de repetição while.

Clone this wiki locally