Jump to content
c0unt3rlog1c

ASM Ciphers

Recommended Posts

Posted (edited)

Assembly (ASM) e considerat unul din limbajele de programare mai limitate, mici.

Beneficiile acestuia sunt timpul mai mic de executie, binaryuri mai mici si limitele neexistente. Aproape orice software de computer poate fi codat in ASM dar asta ar dura mai mult timp decat intr-un limbaj mai mare precum C++ .

Primul exemplu este cipherul Caesar, una din cele mai simple metode de criptare. E reprezentat printr-un cipher de inlocuire unde fiecare litera din mesaj este inlocuita de numarul specific literii din alfabet, in ordine crescatoare.

Al doilea este cipherul Vigenere, unde metoda de encriptare a textului este folosirea unor serii diferite de cipheruri Caesar bazate pe o litera dintr-un cuvant. E o simpla metoda de inlocuire polialfabetica.

Am modificat acesti algoritimi pentru a putea crypta un byte si , de asemenea, am implementat o versiune simpla in limbajul Assembly prin FASM. Aceste coduri pot fi folosite pentru a ascunde mesaje sau a cripta fisiere.

Cipherul ASM Caesar

M-am folosit de urmatorul algoritm bazat pe cipherul Caesar pentru a crypta niste bytes.

crypted[i] = (text[i] + key) MOD 256
text[i] = (crypted[i] + key) MOD 256

Acum va voi arata un exemplu unde am simplificat codul pentru a crypta doar 1 byte, in ideea de a il face mai usor de inteles, pentru a crypta un string intreg el devine mai complicat.

format PE
entry EntryPoint

EntryPoint:
; Curatarea registrilor
xor eax, eax
xor ebx, ebx

; Metoda de criptare
; 5Ah e byteul care dorim sa il criptam
; 80h este cheia ce o vom folosi
mov al, 5Ah
add al, 80h
mov bx, 100h
xor edx, edx
idiv bx
; Byteul nostru criptat este acum dl

; Metoda de decriptare
; dl este byteul ce dorim sa decriptam iar valoarea lui este DAh
; 80h este cheia ce o vom folosi
mov ax, dx
sub al, 80h
mov bx, 100h
xor edx, edx
idiv bx
; Byteul nostru decriptat este acum 5Ah
ret

Cipherul ASM Vegenere

De data aceasta va voi arata doar algoritmul de criptare, excluzand codul, cred ca il puteti face si singuri.

crypted[i] = (text[i] + key[i]) MOD 256
text[i] = (crypted[i] + key[i]) MOD 256

Alte informatii

S-ar putea sa updatez postul cu mai multi cipheri, faceti un bookmark daca vreti.

Multumesc pentru ca ati citit.

Edited by c0unt3rlog1c

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...