• Nenhum resultado encontrado

Compressão de Dados

N/A
N/A
Protected

Academic year: 2022

Share "Compressão de Dados"

Copied!
39
0
0

Texto

(1)

Aula 4

Compressão de Dados

Rodrigo da Cruz Fujioka

(2)

Introdução

• Até agora, buscamos dados comparando suas chaves

• Trabalhamos algumas otimizações

– Ordenação dos dados, por exemplo – Ordenação dos dados, por exemplo

• Vejamos uma abordagem melhor

(3)

Introdução

• Funções hash são funções que recebem dados de comprimento arbitrário, comprimem estes dados e devolvem um número fixo de bits, o resultado hash.

número fixo de bits, o resultado hash.

• Em estrutura de dados as funções hash

são utilizadas para fazer o mapeamento

entre chaves e posições (índices) do

arranjo.

(4)

Conceitos Básicos

Arranjos utilizam índices para armazenar as informações.

Através do índice as operações sobre arranjos são realizadas no tempo O(1).

Arranjos não fornecem mecanismos para calcular o índice a partir de uma informação armazenada. A pesquisa não é O(1).

1 2 3 4 5 6

José Maria Leila Artur Jolinda Gisela Alciene

Família

Família[1] = “José Maria”

(5)

Definição

(6)

Definição

• Trata-se de uma estrutura do tipo dicionário

– Inserção – Remoção – Remoção – Busca

• Utiliza-se parte da informação a ser

armazenada para se obter o índice de

armazenamento

(7)

Definição

• A função que calcula tal índice é chamada de função de hashing (ou espalhamento)

• A função ideal é bijetora

– Cada valor armazenado tem uma chave – Cada valor armazenado tem uma chave

diferente

(8)

Hashing

• Cálculo de Endereço

(9)

Cálculo de Endereço “Hashing”

• Não é apenas um método de pesquisa, mas também um método de organização física de tabelas;

• o armazenamento de cada entrada da

tabela é associado a um endereço

calculado pela aplicação de uma função à

chave de entrada;

(10)

Cálculo de Endereço “Hashing”

• a eficiência da pesquisa neste tipo de organização depende fundamentalmente da função de cálculo de endereço;

• Permite agilizar o processo de consulta de informações.

• Não exige ordenação do conjunto de

dados como a Pesquisa Binária.

(11)

Cálculo de Endereço “Hashing”

• A operação de inserção é tão rápida quanto a operação de consulta

• A função Hashing ideal gera uma entrada

• A função Hashing ideal gera uma entrada

diferente na tabela para cada chave

(12)

Cálculo de Endereço “Hashing”

(13)

Exemplo de Hashing

• Represente a chave numericamente

• Faça o somatório do código ASCII de cada caractere

cada caractere

– end += ascii[i]

(14)

Exemplo de Hashing

(15)

Exemplo de Hashing

• Melhorando o exemplo anterior

• Represente a chave numericamente

• Faça o somatório do código ASCII de cada caractere multiplicado pela sua cada caractere multiplicado pela sua posição + 1

– end += ( ascii[i]*(i+1) )

• divida o somatório por 2

(16)

Exercício

1. Pesquise como obter o código ASCII em C e o utilize para gerar o hashing da próxima questão.

2. Implemente a função hashing descrita no exemplo e crie um programa para verificar os códigos gerados

3. Quais as limitações do algoritmo?

3. Quais as limitações do algoritmo?

4. Quais as possíveis soluções?

(17)

Colisões

(18)

Colisão

• Quando a função Hash gera o mesmo código para chaves diferentes

• Isso é comum

– O número de chaves é muito maior que o número de entradas na tabela.

número de entradas na tabela.

• Por que?

– Difícil obter funções hash perfeitas

(19)

Colisão

• Sendo assim, precisamos de uma boa abordagem para solução das colisões

• Veremos duas abordagens – Encadeamento

– Rehashing

– Rehashing

(20)

Encadeamento

• Cada posição da tabela contém (ou pode conter) uma lista encadeada.

0 1 0 /

1 2 3 4 5 6

A2 B2 C2 /

A3 /

A5 B5 /

/

/ /

(21)

Encadeamento

• Exemplo

– Armazenando os caracteres da palavra DADOS em uma tabela hash de tamanho 7

• função f(k) = ascii(k) % 7

• função f(k) = ascii(k) % 7

0 1 2 3

A O /

/ /

Tabela ASCII A = 65 D = 68 O = 79 S = 83

/

(22)

Rehashing

• Consistem em reaplicar o hash, armazenando a informação na própria tabela

• Veremos duas abordagens

– Rehash linear simples

rhS(pos,tentativas) = (pos + tentativas) % T rhS(pos,tentativas) = (pos + tentativas) % T – Rehash duplo

rhD(pos,tentativas) = (rhD2(pos) + tentativas) % T rhD2(pos) = 1 + pos % (T − 1)

• Onde:

– pos representa o índice da colisão

– T representa o tamanho da tabela hash

(23)

Exercício

• Qual o procedimento para buscarmos um dado valor?

• A capacidade da tabela se esgota?

Como?

Como?

• Implemente a função rehashing duplo

(24)

Aplicações

• Certificação digital

– Criptografia

– Algoritmos Relacionados

• Função Hash

• Função Hash

• Algoritmos Simétricos

• Algoritmos Assimétricos

– Assinatura Digital

(25)

Certificação Digital

• Atualmente, a troca de informações (documentos) vem crescendo.

• Muitas vezes estes documentos precisam ser transmitidos com segurança:

ser transmitidos com segurança:

– Autenticidade;

– Sigilo; e

– Integridade.

• A certificação digital é a tecnologia que

(26)

Funções hash

• As funções hash, também estão relacionadas à criptografia de dados.

• Se uma função deste tipo satisfizer

requisitos adicionais, ela pode ser usada

requisitos adicionais, ela pode ser usada

em aplicações criptográficas como, por

exemplo, proteger a autenticidade de

mensagens enviadas através de canais

inseguros.

(27)

Conceito de Criptografia

(28)

Características

• Através da criptografia e alguns mecanismos podemos garantir atributos como:

– Integridade;

– Sigilo;

– Autenticidade;

• Exemplo simples:

– Informação: “IESP”;

– Chave: 3;

– Algoritmo: Letra := Letra + Chave;

– Resultado: “MHVS”

(29)

Algoritmos Relacionados

Algoritmos Relacionados

(30)

Algoritmos relacionados

• Função Hash

– Utilizada para gerar um “resumo” de uma informação.

– Tem tamanho fixo, independente do tamanho da informação.

– É irreversível.

– É irreversível.

– Não é possível recuperar a informação original a partir do hash gerado.

– O hash é único para cada documento.

– Uma mínima mudança na informação implica em um hash diferente.

– Exemplo: MD5 (hash de 128 bits)

(31)

Algoritmos relacionados

• Algorítimos Simétricos

– Utilizam uma única chave para encriptar e decriptar.

– Utilizam chaves menores que as assimétricas (56bits, 128 bits).

– São mais rápidos que os algorítimos assimétricos, porém mais “frágeis”.

porém mais “frágeis”.

– Por serem mais rápidos são utilizados em grandes quantidades de informação.

– Problema: é necessário enviar a chave para o receptor para que este consiga decriptar a informação.

(32)

Algoritmos relacionados

• Algorítimos Assimétricos

– Utilizam duas chaves no processo: uma pública e outra privada.

– Quando uma chave (pública ou privada) é utilizada para encriptar, o seu par (pública ou privada) é utilizado para decriptar.

decriptar.

– Processo mais lento, mais “forte” e com chaves maiores (1024 bits, 2048 bits) que o simétrico.

– Pode garantir sigilo, criptografando com a chave pública do receptor.

– Pode garantir autenticidade, criptografando com a chave privada do autor.

– Exemplo: RSA, Diffie-Hellman, ElGamal.

(33)

Assinatura Digital

Assinatura Digital

(34)

Assinatura Digital

• Características

– É um processo que garante a autoria e a integridade de uma informação, mas não garante sigilo.

– Utiliza a chave privada do autor para garantir a autoria, pois apenas ele a possui.

autoria, pois apenas ele a possui.

– Utiliza uma função hash para garantir a integridade da informação.

– Não garante a confidencialidade.

– Possui um “TimeStamp” para marcar o momento exato em que foi feita a assinatura.

(35)

Assinatura Digital

• Assinando Digitalmente

– 1º Passo: Gerar um hash da informação que será enviada. Lembrando que o hash é único e tem tamanho fixo (Integridade).

– 2º Passo: Criptografar o hash gerado com a chave – 2º Passo: Criptografar o hash gerado com a chave

privada do autor (Autenticidade).

– 3º Passo: Anexar o hash criptografado ao documento.

– O hash criptografado de uma informação é a assinatura digital propriamente dita.

(36)
(37)

Assinatura Digital

• Conferindo a Assinatura Digital

– 1º Passo: Extrair a assinatura digital da informação recebida.

– 2º Passo: Decriptar a assinatura com a chave pública do emissor, obtendo assim o hash original gerado do emissor, obtendo assim o hash original gerado pelo emissor.

– 3º Passo: O receptor gera um hash da informação recebida.

– 4º Passo: O receptor compara o hash gerado por ele

(38)

Assinatura Digital

• Características

– É um processo que garante a autoria e a integridade de uma informação, mas não garante sigilo.

garante sigilo.

– Problemas:

• Como ter certeza que a chave pública utilizada não é falsa?

• Como ter certeza que a informação assinada foi enviada por quem realmente disse ser?

• Certificado Digital

(39)

Fonte

Fontes originais do professor Rodrigo César Lobo

http://rclobo.googlepages.com/

Referências

Documentos relacionados

Os instrumentos de pesquisa utilizados serão: Ficha de Rastreamento das Participantes do Estudo, International Consultation on Incontinence Questionnaire – Short Form

(2011) em estudo que avaliou a qualidade da dieta em indivíduos exposto e não exposto a um programa de reeducação alimentar mostrou que pessoas com

Changes in the gut microbiota appears to be a key element in the pathogenesis of hepatic and gastrointestinal disorders, including non-alcoholic fatty liver disease, alcoholic

Therefore, the aim of this study was to identify the species of Colletotrichum associated with chayote anthracnose in different production poles of Brazil, based on DNA sequence

In this study, we describe the fish demersal assemblage along the continental shelf of the northeast Brazilian coast 5°-9°S, specifically the ecological descriptors and the

compra dele, no que diz respeito aos gastos relacionados com alimentos e motivos de escolha do ponto de venda, é chegada a hora de entendermos o conhecimento dele acerca de

desenvolvimento deste trabalho têm as seguintes metas a serem atingidas: 1 Confirmar que o cenário apresentado depois do Plano1 Diretor de Reforma do Aparelho do Estado 1997, CPI