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

Criptografia XOR com Kriptus

O documento contém um código em Assembly que implementa um programa para criptografar uma mensagem usando uma chave de 16 caracteres. O programa solicita ao usuário que insira uma mensagem e uma chave, e utiliza a operação XOR para criptografar a mensagem. Após a criptografia, a mensagem resultante é exibida ao usuário.

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)
19 visualizações2 páginas

Criptografia XOR com Kriptus

O documento contém um código em Assembly que implementa um programa para criptografar uma mensagem usando uma chave de 16 caracteres. O programa solicita ao usuário que insira uma mensagem e uma chave, e utiliza a operação XOR para criptografar a mensagem. Após a criptografia, a mensagem resultante é exibida ao usuário.

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: "
key_input: .asciz "\nDigite a chave de 16 caracteres: "
msg_encrypted: .asciz "Mensagem criptografada: "
newline: .asciz "\n"

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

.section .text
.global main

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

# Ler mensagem
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 criptografia


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

# Exibir mensagem criptografada


mov $1, %rax # syscall write
mov $1, %rdi # stdout
lea msg_encrypted(%rip), %rsi
mov $26, %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: kriptus (criptografa usando XOR)
# ----------------------------------------
kriptus:
xor %rcx, %rcx # Zerar contador

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

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_kriptus

done_kriptus:
ret

Você também pode gostar