AVALIAÇÃO P2 (continuação)
| NOME: | Matricula: |
|---|---|
| Esther Sena Martins | 211062769 |
Observações:
A seguir listarei as 3 questões restante da prova P2, deixando informado aqui que, todas as questões terão 2 links, sendo um com entrada no terminal aberta (na qual a professora poderá colocar valores que desejar), e outro com valores fixos (sendo nescessário somente rodar o código).
Questão 9:
Desenvolver um código que calcule sistemas de congruência linear de até 4 equações
utilizando o teorema chinês do resto (linguagens C ou C++)
LINKS
| Código de entrada livre | Código com valores fixos |
|---|---|
| https://onecompiler.com/c/436cj8zrn | https://onecompiler.com/c/436cnxccf |
Breve explicação sobre o código
1. Entradas: O programa lê o número de equações (n) e os pares a[i], m[i].
2. Verificação de Coprimos: Antes de resolver, verifica se os m[i] são coprimos. Se não forem, o teorema não pode ser aplicado.
3. Cálculos do TCR: A função chinese_remainder aplica o algoritmo do TCR:
-
Para cada equação, calcula o termo parcial:
termo=a[i].Mi.Mi−1 -
Soma esses termos ao resultado final.
4. Saída: O resultado final result mod 𝑀 é o menor número x que satisfaz todas as congruências.
5. Exemplo de Entrada:
Número de equações: 3
Valores de a[i] (resto) e m[i] (módulo): 2 3
Valores de a[i] (resto) e m[i] (módulo): 3 4
Valores de a[i] (resto) e m[i] (módulo): 1 5
Soma dos termos: 80+135+36= 251.
Resultado final: 251mod60= 11.
3
2 3
3 4
1 5
Questão 10:
**- Desenvolver um código que calcule a criptografia RSA, no qual o usuário irá definir os primos
(p e q) , número E e o tamanho do bloco. Definir um pré-código com o alfabeto iniciando em A =11, como mostrado em aula (linguagens C **
LINKS
| Código de entrada livre | Código com valores fixos |
|---|---|
| https://onecompiler.com/c/436crzemg | https://onecompiler.com/c/436ctgjab |
Breve explicação sobre código
1. Entradas do Usuário:
-
ppp e qqq: Números primos.
-
eee: Chave pública.
-
Tamanho do bloco e a mensagem a ser criptografada.
2. Cálculos do RSA:
-
n=p×qn = p \times qn=p×q.
-
ϕ(n)=(p−1)×(q−1)\phi(n) = (p-1) \times (q-1)ϕ(n)=(p−1)×(q−1).
-
Verifica se eee é coprimo com ϕ(n)\phi(n)ϕ(n).
-
Calcula ddd, a chave privada, como o inverso modular de eee mod ϕ(n)\phi(n)ϕ(n).
3. Codificação e Criptografia:
-
A mensagem é convertida em números usando A=11,B=12,...,Z=36A = 11, B = 12, ..., Z = 36A=11,B=12,...,Z=36.
-
Os números são encriptados usando c=memod nc = m^e \mod nc=memodn.
4. Decriptação e Decodificação:
-
Os números encriptados são decriptados usando m=cdmod nm = c^d \mod nm=cdmodn.
-
Os números resultantes são convertidos de volta para texto.
5. Exemplo de Entrada:
Números primos p e q: 17 19
Número E (chave pública): 5
Tamanho do bloco: 1
Mensagem (apenas letras maiúsculas e espaços): HELLO
17 19
5
1
HELLO
Questão 11:
**- Desenvolver um código que calcule o CPF e o ISBN de um livro, utilizando as regras de
congruência (linguagens C **
LINKS
| Código de entrada livre | Código com valores fixos |
|---|---|
| https://onecompiler.com/c/436cujhrd | https://onecompiler.com/c/436cu87gs |
Breve explicação sobre código
Cálculo do CPF
1. Regra de Formação:
-
O CPF tem 9 dígitos iniciais e 2 dígitos verificadores.
-
Para calcular o 1º dígito:
-
Multiplica-se cada um dos 9 primeiros dígitos por pesos decrescentes de 10 a 2.
-
Soma-se os resultados.
-
O resto da divisão da soma por 11 é usado para calcular o dígito verificador:
-
Se resto<2\text{resto} < 2resto<2, o dígito é 0.
-
Caso contrário, o dígito é 11−resto11 - \text{resto}11−resto.
-
O 2º dígito é calculado da mesma forma, agora incluindo o 1º dígito verificador.
2. O que acontece no Código:
- Regra de Formação Cálculo do CPF :
O array cpf tem os 9 primeiros dígitos.
A função calcula_digito_cpf calcula os dois dígitos verificadores.
- Regra de Formação Cálculo do ISBN-10 :
O ISBN-10 tem 9 dígitos iniciais e 1 dígito verificador.
Multiplica-se cada dígito por seu índice (de 1 a 9).
Soma-se os produtos.
- Regra de Formação do dígito verificador:
O dígito verificador é o resto da divisão da soma por 11:
Se for 10, representa-se como X.
3. Exemplo de Entrada:
CPF: 971.234.567-00
ISBN: 074798210X
971.234.567-00
074798210X
OBS FINAL: Todos os códigos estão públicos de modo acessível, todos os links a cima funcionam. Espero que esteja tudo certo e de forma clara, deixei dois tipos de entradas (Livre e Fixa), para facilitar. Obrigada :D :)