




Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Encontra documentos específicos para os exames da tua universidade
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
MATEMÁTICA PARA COMPUTAÇÃO do PIM
Tipologia: Trabalhos
1 / 8
Esta página não é visível na pré-visualização
Não perca as partes importantes!





É notável na sociedade atual a imensa importância atribuída aos
sistemas computacionais e as tecnologias da informação e comunicação. E é
através destes que profissionais como cientistas e engenheiros de computação,
programadores, analistas de sistemas, têm ocupado posição de destaque. Para isso,
todos esses profissionais devem ter como base disciplinas como lógica, algoritmos,
estrutura de dados, matemática discreta, geometria, estatística, etc. Portanto, é clara
a constatação de que todas estas disciplinas, todas fundamentadas na matemática
descoberta ao longo dos séculos anteriores, são peças-chave para a concepção e
desenvolvimento de quaisquer sistemas, como também para ganhos de eficiência,
produtividade e na velocidade da discriminação das informações que podem salvar
vidas.
Isto posto, Barbosa (2022) expõe o argumento no qual faz-se
necessário entendermos que, de forma a desempenhar tais funções, o profissional
de segurança da informação deverá ser apto a sugerir soluções algorítmicas que
atendam a situações variadas e a implementar essas soluções com o emprego de
teorias, métodos, técnicas, ferramentas e equipamentos adequados. Não obstante,
Machado (2013) arrisca afirmar que o conceito matemático mais abundante no
mundo da Tecnologia da Informação seja o de “função”. Para isso o autor justifica:
Da escola básica, aprendemos que uma função nada mais é
do que uma lei que determina a relação entre os elementos
de dois conjuntos. No mundo da programação, o conceito é o
mesmo, com a diferença de que os conjuntos geralmente não
são apenas numéricos e que as funções possuem várias
instruções e aceitam vários parâmetros. Uma função que
recebe uma string e a retorna ao contrário é uma regra que
determina a relação do conjunto de caracteres para com ele
mesmo.
A função hash é uma técnica matemática que permite transformar
um conjunto de dados em um valor único de comprimento fixo, conhecido como
hash ou hash code. Nas palavras de Roberts (1998) hashing é usado
extensivamente em aplicativos e merece reconhecimento como uma das invenções
mais inteligentes da ciência da computação. Essa técnica é amplamente utilizada na
área de segurança da informação para garantir a integridade dos dados e evitar
fraudes. No contexto da doação de sangue, a função hash pode ser utilizada para
unificar as diferentes bases de dados existentes, de forma a criar um único registro
de doadores e facilitar o processo de identificação e convocação de doadores em
situações de emergência.
Para utilizar a função hash, é necessário definir uma fórmula
matemática que transforme os dados em um valor único. Essa fórmula deve ser
complexa o suficiente para evitar que duas entradas diferentes gerem o mesmo
hash, mas ao mesmo tempo deve ser simples o suficiente para ser facilmente
calculada. Uma vez que os dados são transformados em hashes, é possível
compará-los rapidamente para verificar se são iguais, sem precisar comparar os
dados originais. Isso torna o processo de busca e identificação de doadores mais
eficiente e ágil.
O dicionário online de Cambrige traz a palavra “picadinho” como
uma das traduções para o termo hash. E essa é uma das ideias que devem ser
Fonte: Youtube (Tópico 11 - Funções de Hash - YouTube)
Na figura, uma função hash H (representada pela ferramenta
moinho) recebe como argumento uma mensagem M de qualquer tamanho e retorna
um valor hash h de tamanho fixo. De forma representativa temos que:
Como tratado anteriormente, as funções Hash são conhecidas por
resumirem o dado. Da representação do exemplificada acima, temos que a saída ℎ é
também chamada resumo da mensagem ou bloco de dados original M.
Não obstante, como uma das aplicações do hash code pode ser na
verificação da integridade da mensagem, é possível fazer uma demonstração ainda
mais sucinta de uma função de hash por meio de uma operação lógica simples como
o XOR bit a bit de um bloco de bits. Dessa forma, partindo de valores iniciais de
comprimento variável, ao realizarmos a operação, obteremos um valor final que será
o resumo da mensagem. Portanto, utilizaremos a seguinte expressão:
Como hipótese, consideremos o bloco de 8 bits 11100011 como
representação de uma mensagem enviada de Alice para Beto, ilustrada na figura a
seguir:
Figura 4: Ilustração representativa de uma troca de mensagens
Fonte: Itaú (2023) - Adaptada
Na operação XOR (também denominada ou exclusivo em algumas
literaturas) é sempre exibido um bit 1 quando as entradas não forem iguais, o que
ocorre quando uma das duas entradas for exclusivamente verdade. A seguir é
possível verificar a tabela verdade:
Nesse exemplo, tomaremos como parâmetro a utilização de blocos
de 4 bits para a operação XOR. Logo:
Portanto, para que Beto possa verificar a integridade da mensagem
recebida, um aplicativo poderia ser utilizado de forma a calcular o resultado da
operação XOR bit a bit na mensagem recebida e realizar a comparação com
resultado da mensagem enviada por Alice. Se ambos os resultados forem iguais, a
integridade da mensagem foi mantida.
Os exemplos apresentados, apesar de muitíssimos simplificados,
permitem expor a ideia por trás dos algorítimos de hash. Em uma situação real, a
função implementada é bem mais complexa, de forma a compreender alguns
requisitos e trazer benefícios. DevMedia (2023) traz a seguinte aplicação de uma
função hash utilizando o algorítmo MD5 na linguagem de programação java:
Código completo da classe na linguagem java
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class Criptografia {
ao índice de livros.
Ao longo de todo o levantamento teórico, nota-se algumas
propriedades em comum nas funções hash utilizadas no meio computacional, sendo
elas:
Facilidade de Implementação: O hash deve fácil de ser implementado, facil
computacionalmente falando. Não deve utilizar muitos recursos. Deve ser
barato em termos de recursos para um sistema computacional, de forma a
não haver prejuízos no processo como um todo.
Unidirecionalidade: A função hash deve ser unidirecional, ou seja, através do
resumo não é possível retornar aos dados originais.
Determinismo: O hash possui a propriedade denominada determinística, que
explica que o hash sempre será o mesmo para o mesmo dado de entrada. E
uma mudança nos dados de entrada, por mínima que seja, resultará em um
resultado totalmente diferente. Alterações devem gerar alteração: Mudanças
nos dados que são entrada na função hash devem gerar resultados
diferentes. Não deve ser possível alterar quaisquer dados de entrada sem
modificar seu resultado após passar pela função hash.
Ausência de colisão: Uma boa função hash não deve apresentar mesmos
resultados para dados de entrada distindos. O conceito de colisão é um
cenário onde dois conjuntos de dados de entrada possam gerar um mesmo
hash. Esse é um caso que deve ser evitado, ou suas ocorreências devem ser
mínimamente possíveis. Em todos os algorítmos pesquisados, o cenário onda
colisões acontecem é matematicamente improvável (uma chance
ridiculamente pequena de acontecer).
Um exemplo prático de como a função hash pode ser aplicada no
contexto da doação de sangue é na identificação dos doadores. Cada doador pode
ter uma chave única gerada por meio da função hash, que seria utilizada para
unificar as informações em todas as bases de dados do sistema de doação. Dessa
forma, seria possível garantir a integridade e a segurança das informações, além de
facilitar o processo de cadastro e triagem dos doadores.
Outra aplicação da função hash seria na identificação de doadores
compatíveis com pacientes com necessidades específicas de transfusão sanguínea.
Por meio da análise das informações geradas pela função hash, seria possível
identificar rapidamente os doadores compatíveis e agilizar o processo de doação e
transfusão de sangue.