Tı́tulo
Aplicações de Congruências e
Criptografia
8 de Junho de 2025
16 de junho de 2025 1 / 30
Seção 4.5: Aplicações de Congruências
Funções de Hash
Números Pseudoaleatórios
Dı́gitos de Verificação
16 de junho de 2025 2 / 30
Funções de Hash (1/2)
Definição: Uma função de hash h atribui a localização de memória h(k) ao
registro que tem k como chave.
Uma função de hash comum é h(k) = k mod m, onde m é o número de
localizações de memória.
Como essa função de hash é sobrejetiva, todas as localizações de memória
são possı́veis.
16 de junho de 2025 3 / 30
Funções de Hash (2/2)
Exemplo: Seja h(k) = k mod 111. Esta função de hash atribui os registros
de clientes com números de seguridade social como chaves às localizações de
memória da seguinte maneira:
h(064212848) = 064212848 mod 111 = 14
h(037149212) = 037149212 mod 111 = 65
h(107405723) = 107405723 mod 111 = 14, mas como a localização 14 já está
ocupada, o registro é atribuı́do à próxima posição disponı́vel, que é 15.
A função de hash não é injetiva, pois há muitas chaves possı́veis em relação
às localizações de memória. Quando mais de um registro é atribuı́do à
mesma localização, ocorre uma colisão. Aqui, a colisão foi resolvida
atribuindo o registro à primeira localização livre.
Para resolução de colisões, pode-se usar uma função de sondagem linear:
h(k, i) = (h(k) + i) mod m, onde i varia de 0 a m − 1.
Existem outros métodos para lidar com colisões, que podem ser abordados
em um curso posterior de Ciência da Computação.
16 de junho de 2025 4 / 30
Números Pseudoaleatórios (1/3)
Números escolhidos aleatoriamente são necessários para muitos propósitos,
incluindo simulações computacionais.
Números pseudoaleatórios não são verdadeiramente aleatórios, pois são
gerados por métodos sistemáticos.
O método congruencial linear é um procedimento comumente usado para
gerar números pseudoaleatórios.
São necessários quatro inteiros: o módulo m, o multiplicador a, o incremento
c, e a semente x0 , com 2 ≤ a < m, 0 ≤ c < m, 0 ≤ x0 < m.
Gera-se uma sequência de números pseudoaleatórios {xn }, com 0 ≤ xn < m
para todos n, usando sucessivamente a função definida recursivamente
xn+1 = (axn + c) mod m.
Se números pseudoaleatórios entre 0 e 1 forem necessários, os números
gerados são divididos pelo módulo, xn /m.
16 de junho de 2025 5 / 30
Números Pseudoaleatórios (2/3)
Exemplo: Encontre a sequência de números pseudoaleatórios gerada pelo
método congruencial linear com módulo m = 9, multiplicador a = 7,
incremento c = 4, e semente x0 = 3.
Solução: Calcule os termos da sequência usando sucessivamente a
congruência xn+1 = (7xn + 4) mod 9, com x0 = 3.
x1 = 7x0 + 4 mod 9 = 7 · 3 + 4 mod 9 = 25 mod 9 = 7
x2 = 7x1 + 4 mod 9 = 7 · 7 + 4 mod 9 = 53 mod 9 = 8
x3 = 7x2 + 4 mod 9 = 7 · 8 + 4 mod 9 = 60 mod 9 = 6
x4 = 7x3 + 4 mod 9 = 7 · 6 + 4 mod 9 = 46 mod 9 = 1
x5 = 7x4 + 4 mod 9 = 7 · 1 + 4 mod 9 = 11 mod 9 = 2
x6 = 7x5 + 4 mod 9 = 7 · 2 + 4 mod 9 = 18 mod 9 = 0
x7 = 7x6 + 4 mod 9 = 7 · 0 + 4 mod 9 = 4 mod 9 = 4
x8 = 7x7 + 4 mod 9 = 7 · 4 + 4 mod 9 = 32 mod 9 = 5
x9 = 7x8 + 4 mod 9 = 7 · 5 + 4 mod 9 = 39 mod 9 = 3
16 de junho de 2025 6 / 30
Números Pseudoaleatórios (3/3)
A sequência gerada é 3, 7, 8, 6, 1, 2, 0, 4, 5, 3, 7, 8, . . .
Ela se repete após gerar 9 termos.
Comumente, computadores utilizam um gerador congruencial linear com
incremento c = 0. Isso é chamado de gerador multiplicativo puro. Tal
gerador com módulo 231 − 1 e multiplicador 75 = 16, 807 gera 231 − 2
números antes de repetir.
16 de junho de 2025 7 / 30
Dı́gitos de Verificação: UPCs (1/2)
Um método comum para detectar erros em sequências de dı́gitos é adicionar
um dı́gito extra no final, avaliado por uma função. Se o dı́gito final não
estiver correto, assume-se que a sequência não está correta.
Exemplo: Produtos de varejo são identificados por seus Códigos Universais
de Produto (UPCs). Geralmente, eles têm 12 dı́gitos decimais, sendo o
último o dı́gito de verificação. O dı́gito de verificação é determinado pela
congruência:
3x1 +x2 +3x3 +x4 +3x5 +x6 +3x7 +x8 +3x9 +x10 +3x11 +x12 ≡ 0 (mod 10).
16 de junho de 2025 8 / 30
Dı́gitos de Verificação: UPCs (2/2)
a. Suponha que os primeiros 11 dı́gitos do UPC sejam 79357343104. Qual é
o dı́gito de verificação?
Solução:
3 · 7 + 9 + 3 · 3 + 5 + 3 · 7 + 3 + 3 · 4 + 3 + 3 · 1 + 0 + 3 · 4 + x12 ≡ 0 (mod 1
21 + 9 + 9 + 5 + 21 + 3 + 12 + 3 + 3 + 0 + 12 + x12 ≡ 0 (mod 10)
98 + x12 ≡ 0 (mod 10)
x12 ≡ 2 (mod 10) Logo, o dı́gito de verificação é 2.
b. O UPC 041331021641 é válido?
Solução:
3·0+4+3·1+3+3·3+1+3·0+2+3·1+6+3·4+1≡0 (mod 10)
0 + 4 + 3 + 3 + 9 + 1 + 0 + 2 + 3 + 6 + 12 + 1 = 44 ≡ 4 ̸≡ 0 (mod 10)
Logo, 041331021641 não é um UPC válido.
16 de junho de 2025 9 / 30
Dı́gitos de Verificação: ISBNs (1/2)
Livros são identificados por um Número Internacional Padrão de Livro
(ISBN-10), um código de 10 dı́gitos. Os primeiros 9 dı́gitos identificam a
lı́ngua, a editora e o livro. O décimo dı́gito é um dı́gito de verificação,
determinado pela seguinte congruência:
9
X
x10 ≡ ixi (mod 11).
i=1
A validade de um número ISBN-10 pode ser avaliada pela equivalência:
9
X
ixi ≡ 0 (mod 11).
i=1
16 de junho de 2025 10 / 30
Dı́gitos de Verificação: ISBNs (2/2)
a. Suponha que os primeiros 9 dı́gitos do ISBN-10 sejam 007288008. Qual é
o dı́gito de verificação?
Solução:
x10 ≡ 1 · 0 + 2 · 0 + 3 · 7 + 4 · 2 + 5 · 8 + 6 · 8 + 7 · 0 + 8 · 0 + 9 · 8 (mod 11)
x10 ≡ 0 + 0 + 21 + 8 + 40 + 48 + 0 + 0 + 72 (mod 11)
x10 ≡ 189 ≡ 2 (mod 11). Logo, x10 = 2.
b. O ISBN-10 084930149X é válido?
Solução:
1 · 0 + 2 · 8 + 3 · 4 + 4 · 9 + 5 · 3 + 6 · 0 + 7 · 1 + 8 · 4 + 9 · 9 + 10 · 10 =
0 + 16 + 12 + 36 + 15 + 0 + 7 + 32 + 81 + 100 = 299 ≡ 2 ̸≡ 0 (mod 11)
Logo, 084930149X não é um ISBN-10 válido.
Um erro único é um erro em um dı́gito de um número de identificação e um
erro de transposição é a troca acidental de dois dı́gitos. Ambos os tipos de
erros podem ser detectados pelo dı́gito de verificação para ISBN-10.
16 de junho de 2025 11 / 30
Seção 4.6: Criptografia
Criptografia Clássica
Criptossistemas
Criptografia de Chave Pública
Criptossistema RSA
Protocolos Criptográficos
Raı́zes Primitivas e Logaritmos Discretos
16 de junho de 2025 12 / 30
Cifra de César (1/2)
Júlio César criou mensagens secretas deslocando cada letra três letras à frente
no alfabeto (enviando as últimas três letras para as primeiras três letras). Por
exemplo, a letra B é substituı́da por E e a letra X é substituı́da por A. Esse
processo de tornar uma mensagem secreta é um exemplo de criptografia.
Aqui está como funciona o processo de criptografia:
Substitua cada letra por um inteiro de Z26 , ou seja, um inteiro de 0 a 25
representando uma posição a menos que sua posição no alfabeto.
A função de criptografia é f (p) = (p + 3) mod 26. Ela substitui cada inteiro p
no conjunto {0, 1, 2, . . . , 25} por f (p) no mesmo conjunto.
Substitua cada inteiro p pela letra com a posição p + 1 no alfabeto.
16 de junho de 2025 13 / 30
Cifra de César (2/2)
Exemplo: Criptografe a mensagem ”MEET YOU IN THE PARK”usando a
cifra de César.
Solução: 12 4 4 19 24 14 20 8 13 19 7 4 15 0 17 10.
Agora substitua cada um desses números p por f (p) = (p + 3) mod 26:
15 7 7 22 1 17 23 11 16 22 10 7 18 3 20 13.
Traduzindo os números de volta para letras, obtém-se a mensagem
criptografada: ”PHHW BRX LQ WKH SDUN”.
16 de junho de 2025 14 / 30
Cifra de César: Decriptografia
Para recuperar a mensagem original, use f −1 (p) = (p − 3) mod 26. Assim,
cada letra na mensagem codificada é deslocada três letras para trás no
alfabeto, com as primeiras três letras enviadas para as últimas três letras.
Esse processo de recuperar a mensagem original a partir da mensagem
criptografada é chamado de decriptografia.
A cifra de César é uma de uma famı́lia de cifras chamadas cifras de
deslocamento. As letras podem ser deslocadas por um inteiro k, sendo 3
apenas uma possibilidade. A função de criptografia é:
f (p) = (p + k) mod 26
E a função de decriptografia é:
f −1 (p) = (p − k) mod 26
O inteiro k é chamado de chave.
16 de junho de 2025 15 / 30
Cifra de Deslocamento (1/2)
Exemplo 1: Criptografe a mensagem ”STOP GLOBAL WARMING”usando a
cifra de deslocamento com k = 11.
Solução: Substitua cada letra pelo elemento correspondente de Z26 :
18 19 14 15 6 11 14 1 0 11 22 0 17 12 8 13 6.
Aplique o deslocamento f (p) = (p + 11) mod 26, obtendo:
3 4 25 0 17 22 25 12 11 22 7 11 2 23 19 24 17.
Traduzindo os números de volta para letras, obtém-se o texto cifrado:
”DEZA RWZMLW HLCXTYR”.
16 de junho de 2025 16 / 30
Cifra de Deslocamento (2/2)
Exemplo 2: Decriptografe a mensagem ”LEWLYPLUJL PZ H NYLHA
ALHJOLY”que foi criptografada usando a cifra de deslocamento com k = 7.
Solução: Substitua cada letra pelo elemento correspondente de Z26 :
11 4 22 11 24 15 11 20 9 11 15 25 7 13 24 7 0 0 11 7 9 14 11 24.
Desloque cada número por −k = −7 (mod 26), obtendo:
4 23 15 4 17 8 4 13 2 4 8 18 0 6 17 0 19 19 4 0 2 7 4 17.
Traduzindo os números de volta para letras, obtém-se a mensagem
decriptada: ”EXPERIENCE IS A GREAT TEACHER”.
16 de junho de 2025 17 / 30
Cifras Afins
As cifras de deslocamento são um caso especial de cifras afins, que usam
funções da forma f (p) = (ap + b) mod 26, onde a e b são inteiros, escolhidos
de modo que f seja uma bijeção.
A função é uma bijeção se, e somente se, gcd(a, 26) = 1.
Exemplo: Qual letra substitui a letra K quando a função
f (p) = (7p + 3) mod 26 é usada para criptografia?
Solução: Como 10 representa K , f (10) = (7 · 10 + 3) mod 26 = 21, que é
então substituı́do por V .
Para decriptar uma mensagem criptografada por uma cifra de deslocamento,
a congruência c ≡ ap + b (mod 26) precisa ser resolvida para p.
Subtraia b de ambos os lados para obter c − b ≡ ap (mod 26).
Multiplique ambos os lados pelo inverso de a (mod 26), que existe pois
gcd(a, 26) = 1.
ā(c − b) ≡ āap (mod 26), que simplifica para ā(c − b) ≡ p (mod 26).
p ≡ ā(c − b) (mod 26) é usado para determinar p em Z26 .
16 de junho de 2025 18 / 30
Criptoanálise de Cifras Afins
O processo de recuperar o texto claro a partir do texto cifrado sem
conhecimento do método de criptografia e da chave é conhecido como
criptoanálise ou quebra de códigos.
Uma ferramenta importante para criptoanálise de textos cifrados produzidos
com cifras afins é a frequência relativa das letras. As nove letras mais
comuns em textos em inglês são E (13%), T (9%), A (8%), O (8%), I (7%),
N (7%), S (7%), H (6%) e R (6%).
Para analisar o texto cifrado:
Encontre a frequência das letras no texto cifrado.
Hipotetize que a letra mais frequente é produzida pela criptografia de E .
Se o valor do deslocamento de E para a letra mais frequente for k, desloque o
texto cifrado por −k e veja se faz sentido.
Se não, tente T como hipótese e continue.
Exemplo: Intercetamos a mensagem ”ZNK KGXRE HOXJ MKZY ZNK
CUXS”que sabemos ter sido produzida por uma cifra de deslocamento.
Vamos tentar criptoanalisá-la.
Solução: A letra mais comum no texto cifrado é K . Talvez as letras tenham
sido deslocadas por 6, pois isso mapearia E para K . Deslocando toda a
mensagem por −6, obtemos: ”THE EARLY BIRD GETS THE WORM”.
16 de junho de 2025 19 / 30
Cifras de Bloco (1/2)
Cifras que substituem cada letra do alfabeto por outra letra são chamadas
cifras de caractere ou monoalfabéticas.
Elas são vulneráveis à criptoanálise baseada na frequência de letras. Cifras de
bloco evitam esse problema, substituindo blocos de letras por outros blocos
de letras.
Um tipo simples de cifra de bloco é chamado de cifra de transposição. A
chave é uma permutação σ do conjunto {1, 2, . . . , m}, onde m é um inteiro,
ou seja, uma função injetiva de {1, 2, . . . , m} para si mesmo.
Para criptografar uma mensagem, divida as letras em blocos de tamanho m,
adicionando letras adicionais para completar o último bloco. Criptografamos
p1 , p2 , . . . , pm como C1 , C2 , . . . , Cm = pσ(1) , pσ(2) , . . . , pσ(m) .
Para decriptar c1 , c2 , . . . , cm , transponha as letras usando a permutação
inversa σ −1 .
16 de junho de 2025 20 / 30
Cifras de Bloco (2/2)
Exemplo: Usando a cifra de transposição baseada na permutação σ do
conjunto {1, 2, 3, 4} com σ(1) = 3, σ(2) = 1, σ(3) = 4, σ(4) = 2,
a. Criptografe o texto claro ”PIRATE ATTACK”.
b. Decript a mensagem cifrada ”SWEE TRAEOEHS”, que foi criptografada
usando a mesma cifra.
Solução:
a. Divida em quatro blocos: PIRA — TEAT — TACK.
Aplique a permutação σ, dando: IAPR — ETTA — AKTC.
b. σ −1 : σ −1 (1) = 2, σ −1 (2) = 4, σ −1 (3) = 1, σ −1 (4) = 3.
Aplique a permutação σ −1 , dando: USEW — ATER — HOSE.
Divida em palavras para obter: USE WATER HOSE.
16 de junho de 2025 21 / 30
Criptossistemas (1/2)
Definição: Um criptossistema é uma quı́ntupla (P, C , K , E , D), onde:
P é o conjunto de strings de texto claro,
C é o conjunto de strings de texto cifrado,
K é o espaço de chaves (conjunto de todas as chaves possı́veis),
E é o conjunto de funções de criptografia,
D é o conjunto de funções de decriptação.
A função de criptografia em E correspondente à chave k é denotada por Ek e
a função de decriptação em D que decripta o texto cifrado criptografado
usando Ek é denotada por Dk . Portanto: Dk (Ek (p)) = p, para todas as
strings de texto claro p.
16 de junho de 2025 22 / 30
Criptossistemas (2/2)
Exemplo: Descreva a famı́lia de cifras de deslocamento como um
criptossistema.
Solução: Suponha que as mensagens sejam strings consistindo de elementos
em Z26 .
P é o conjunto de strings de elementos em Z26 .
C é o conjunto de strings de elementos em Z26 .
K = Z26 .
E consiste em funções da forma Ek (p) = (p + k) mod 26.
D é o mesmo que E , onde Dk (p) = (p − k) mod 26.
16 de junho de 2025 23 / 30
Criptografia de Chave Pública
Todas as cifras clássicas, incluindo cifras de deslocamento e afins, são
criptossistemas de chave privada. Conhecer a chave de criptografia permite
determinar rapidamente a chave de decriptação.
Todas as partes que desejam se comunicar usando um criptossistema de
chave privada devem compartilhar a chave e mantê-la em segredo.
Em criptossistemas de chave pública, inventados na década de 1970, saber
como criptografar uma mensagem não ajuda a decriptá-la. Portanto, todos
podem ter uma chave de criptografia conhecida publicamente. A única chave
que precisa ser mantida em segredo é a chave de decriptação.
16 de junho de 2025 24 / 30
Criptossistema RSA (1/2)
Um criptossistema de chave pública, agora conhecido como sistema RSA, foi
introduzido em 1976 por três pesquisadores do MIT: Ronald Rivest, Adi
Shamir e Leonard Adelman.
Sabe-se agora que o método foi descoberto anteriormente por Clifford Cocks,
trabalhando secretamente para o governo do Reino Unido.
A chave pública de criptografia é (n, e), onde n = pq (o módulo) é o produto
de dois primos grandes (200 dı́gitos) p e q, e um expoente e que é
relativamente primo a (p − 1)(q − 1). Os dois primos grandes podem ser
encontrados rapidamente usando testes de primalidade probabilı́sticos,
discutidos anteriormente. Mas n = pq, com aproximadamente 400 dı́gitos,
não pode ser fatorado em um tempo razoável.
16 de junho de 2025 25 / 30
Criptografia RSA (2/2)
Para criptografar uma mensagem usando RSA com uma chave (n, e):
i. Converta a mensagem de texto claro M em sequências de inteiros de dois
dı́gitos representando as letras. Use 00 para A, 01 para B, etc.
ii. Concatene os inteiros de dois dı́gitos em strings de dı́gitos.
iii. Divida essa string em blocos de tamanho igual de 2N dı́gitos, onde 2N é o
maior número par 2525...25 com 2N dı́gitos que não excede n.
iv. A mensagem de texto claro M é agora uma sequência de inteiros
m1 , m2 , . . . , mk .
v. Cada bloco (um inteiro) é criptografado usando a função C = M e mod n.
Exemplo: Criptografe a mensagem ”STOP”usando o criptossistema RSA
com chave (2537, 13).
2537 = 43 · 59, p = 43 e q = 59 são primos e
gcd(e, (p − 1)(q − 1)) = gcd(13, 42 · 58) = 1.
Solução: Converta as letras em STOP para seus equivalentes numéricos:
18 19 14 15.
Divida em blocos de quatro dı́gitos (pois 2525 < 2537 < 252525): 1819 1415.
Criptografe cada bloco usando o mapeamento C = M 13 mod 2537.
Como 181913 mod 2537 = 2081 e 141513 mod 2537 = 5, a mensagem
criptografada é 25 08 12.
16 de junho de 2025 26 / 30
Decriptografia RSA
Para decriptar uma mensagem cifrada RSA, é necessária a chave de
decriptação d, um inverso de e módulo (p − 1)(q − 1). O inverso existe pois
gcd(e, (p − 1)(q − 1)) = gcd(13, 42 · 58) = 1.
Com a chave de decriptação d, podemos decriptar cada bloco com o cálculo
M = C d mod p · q.
O RSA funciona como um sistema de chave pública, pois o único método
conhecido para encontrar d é baseado na fatoração de n em primos.
Atualmente, não há método viável conhecido para fatorar números grandes
em primos.
Exemplo: A mensagem 0981 é recebida. Qual é a mensagem decriptada se
ela foi criptografada usando a cifra RSA do exemplo anterior?
Solução: A mensagem foi criptografada com n = 43 · 25 e expoente q = 25.
Um inverso de 37 módulo 42 · 25 = 1050 é d = 37.
Para decriptar um bloco C , M = C 37 mod 2537.
Como 0981937 mod 2537 = 704 e 046121 mod 2537 = 1115, a mensagem
decriptada é 0704 1115. Traduzindo de volta para letras em inglês, a
mensagem é HELP.
16 de junho de 2025 27 / 30
Protocolos Criptográficos: Troca de Chaves
Protocolos criptográficos são trocas de mensagens realizadas por duas ou
mais partes para alcançar um objetivo de segurança especı́fico.
A troca de chaves é um protocolo pelo qual duas partes podem trocar uma
chave secreta em um canal não seguro sem terem informações secretas
compartilhadas anteriormente. Aqui, o protocolo de acordo de chaves de
Diffie-Hellman é descrito por exemplo:
[Link] que Alice e Bob queiram compartilhar uma chave comum.
[Link] e Bob concordam em usar um primo p e uma raiz primitiva a de p.
[Link] escolhe um inteiro secreto k1 e envia ak1 mod p para Bob.
iv. Bob escolhe um inteiro secreto k2 e envia ak2 mod p para Alice.
k
v. Alice calcula ak2 1 mod p.
k
vi. Bob calcula ak1 2 mod p.
k 1
No final do protocolo, Alice e Bob têm a chave compartilhada ak2
k2
mod p = ak1 mod p.
Para encontrar as informações secretas a partir das informações públicas,
seria necessário que o adversário encontrasse k1 e k2 a partir de ak1 mod p e
ak2 mod p, respectivamente. Isso é uma instância do problema do logaritmo
discreto, considerado computacionalmente inviável quando p e a são
suficientemente grandes.
16 de junho de 2025 28 / 30
Protocolos Criptográficos: Assinaturas Digitais (1/2)
Adicionar uma assinatura digital a uma mensagem é uma forma de garantir
ao destinatário que a mensagem veio do remetente declarado.
Suponha que a chave pública RSA de Alice seja (n, e) e sua chave privada
seja d. Alice criptografa uma mensagem de texto claro x usando
E(n,e) (x) = x e mod n. Ela decripta uma mensagem cifrada y usando
D(n,e) (y ) = y d mod n.
Alice deseja enviar uma mensagem M para que todos que receberem a
mensagem saibam que ela veio dela.
1. Ela traduz a mensagem para equivalentes numéricos e divide em blocos, assim
como na criptografia RSA.
2. Ela então aplica sua função de decriptação D(n,e) aos blocos e envia os
resultados a todos os destinatários pretendidos.
3. Os destinatários aplicam a função de criptografia
de Alice e o resultado é o
texto claro original, pois E(n,e) D(n,e) (x) = x.
Todos que recebem a mensagem podem então ter certeza de que ela veio de
Alice.
16 de junho de 2025 29 / 30
Protocolos Criptográficos: Assinaturas Digitais (2/2)
Exemplo: Suponha que o criptossistema RSA de Alice seja o mesmo do
exemplo anterior com chave (2537, 13), 2537 = 43 · 59, p = 43 e q = 59 são
primos e gcd(e, (p − 1)(q − 1)) = gcd(13, 42 · 58) = 1.
Sua chave de decriptação é d = 937.
Ela deseja enviar a mensagem ”MEET AT NOON”para seus amigos para que
eles possam ter certeza de que a mensagem é dela.
Solução: Alice traduz a mensagem em blocos de dı́gitos:
12 04 04 19 00 19 13 14 14 13.
1. Ela então aplica sua transformação de decriptação D(2537,13) (x) = x 937
mod 2537 a cada bloco.
2. Ela encontra (usando seu laptop, habilidades de programação e conhecimento
de matemática discreta) que:
1204937 mod 2537 = 817, 419937 mod 2537 = 555, 19937 mod 2537 = 13
3. Ela envia 0817 0555 1310 2173 1026.
Quando um de seus amigos recebe a mensagem, eles aplicam a
transformação de criptografia de Alice E(2537,13) a cada bloco. Eles então
obtêm a mensagem original, que traduzem de volta para letras em inglês.
16 de junho de 2025 30 / 30