0% acharam este documento útil (0 voto)
3 visualizações2 páginas

Descriptografia com Chave de 16 Caracteres

O documento contém um código em Assembly que implementa um programa para descriptografar uma mensagem usando uma chave de 16 caracteres. O programa solicita ao usuário a entrada da mensagem criptografada e da chave, realiza a descriptografia através de uma função que utiliza a operação XOR, e exibe a mensagem descriptografada. O fluxo do programa é gerenciado por chamadas de sistema para leitura e escrita no console.

Enviado por

Eduardo
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato TXT, PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
3 visualizações2 páginas

Descriptografia com Chave de 16 Caracteres

O documento contém um código em Assembly que implementa um programa para descriptografar uma mensagem usando uma chave de 16 caracteres. O programa solicita ao usuário a entrada da mensagem criptografada e da chave, realiza a descriptografia através de uma função que utiliza a operação XOR, e exibe a mensagem descriptografada. O fluxo do programa é gerenciado por chamadas de sistema para leitura e escrita no console.

Enviado por

Eduardo
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato TXT, PDF, TXT ou leia on-line no Scribd

.section .

data
msg_input: .asciz "Digite a mensagem criptografada: "
key_input: .asciz "\nDigite a chave de 16 caracteres: "
msg_decrypted: .asciz "Mensagem descriptografada: "
newline: .asciz "\n"

.section .bss
.lcomm message, 256
.lcomm key, 16

.section .text
.global main

main:
# Exibir prompt e ler mensagem criptografada
mov $1, %rax # syscall write
mov $1, %rdi # stdout
lea msg_input(%rip), %rsi
mov $35, %rdx
syscall

# Ler mensagem criptografada


mov $0, %rax # syscall read
mov $0, %rdi # stdin
lea message(%rip), %rsi
mov $256, %rdx
syscall

# Exibir prompt e ler chave


mov $1, %rax # syscall write
mov $1, %rdi # stdout
lea key_input(%rip), %rsi
mov $34, %rdx
syscall

# Ler chave
mov $0, %rax # syscall read
mov $0, %rdi # stdin
lea key(%rip), %rsi
mov $16, %rdx
syscall

# Chamar função de descriptografia


lea message(%rip), %rdi
lea key(%rip), %rsi
call dkriptus

# Exibir mensagem descriptografada


mov $1, %rax # syscall write
mov $1, %rdi # stdout
lea msg_decrypted(%rip), %rsi
mov $29, %rdx
syscall

mov $1, %rax # syscall write


mov $1, %rdi # stdout
lea message(%rip), %rsi
mov $256, %rdx
syscall
# Encerrar programa
mov $60, %rax # syscall exit
xor %rdi, %rdi
syscall

# ----------------------------------------
# Função: dkriptus (descriptografa usando XOR)
# ----------------------------------------
dkriptus:
xor %rcx, %rcx # Zerar contador

loop_dkriptus:
lea message(%rip), %rdi # Corrige acesso à variável global
movb (%rdi, %rcx, 1), %al
testb %al, %al
je done_dkriptus

mov %rcx, %rdx


and $0xF, %rdx # Calcula (rcx % 16)
lea key(%rip), %rsi # Corrige acesso à variável global
xorb (%rsi, %rdx, 1), %al # XOR com chave circular

movb %al, (%rdi, %rcx, 1) # Escreve resultado de volta


inc %rcx
jmp loop_dkriptus

done_dkriptus:
ret

Você também pode gostar