[Arithmétique] - [Affichage] - [Addition] - [Soustraction] - [Multiplication] - [Division]

.:: Rubrique Arithmétique ::.

Le cryptage/décryptage des données requiert parfois des algorithmes très complexes qui utilisent la plupart du temps des nombres très grands (par exemples des clefs qui peuvent dépasser les 100 chiffres pour la méthode de cryptage RSA !) pour empêcher les personnes mal intentionnées (ça existe!? ben voyons... ;-)) de lire leurs messages codés. Mais avant de pouvoir créer ces algorithmes il faut déjà savoir manipuler des opérations arithmétiques simples sur des grands nombres (du genre additions, multiplications...) et en assembleur s'il vous plaît! mais ça c'est pas gagné...

Cette rubrique s'adresse donc à des personnes qui ont déjà des bases en assembleur.
Je ne fournirais pas les sources complètes des programmes, ce n'est pas le but de cet article. Le but est de comprendre comment ça marche pour pouvoir le faire par ses propres moyens. Toutefois si vous ne comprenez pas quelquechose vous pouvez toujours me contacter par mail.
Tous les segments de code qui suivront sont optimisés pour nasm sous WINDOWSet en mode 16 bits pour faciliter la compréhension et la mise en pratique des exemples. si vous avez les bases necessaires, vous pourez facilement optimiser les codes suivants en 32 bits en les incluant comme fonction dans un programme 32 bits et donc augmenter considérablement la vitesse d'execution d'une division par exemple (ça c'est pour les pros !!! ).
Mais bon, pas de panic, en 16 bits c'est déjà rapide.

Déjà il faut pouvoir stocker ces nombres et les modifier: il faut donc créer un "format" de nombre. On a besoin de connaître le nombre et où il se termine: soit, sa longueur (LONG) et ses données (DATA):

(LONG+1) OCTETS
1 OCTET | (LONG) OCTET(S)
<<< Longueur du nombre en octet (LONG) >>> | <<< Le nombre (DATA) >>>

!!! Attention !!! Message s'adressant exclusivement aux pinailleurs: "Pour toute la suite de ce tutorial, les nombres seront considérés comme des entiers naturels (positifs et entiers) soit des nombres hexadécimaux non-signés".

Bon ça y est, on à parfaitement définit notre nombre !!! mais il est limité en taille, on se contentera donc de calculer des nombres dont la valeur hexadécimal n'excède pas les 510 chiffres !!! soit des nombres de 2040 bits...

Voici les différentes rubriques:

- Instructions des x86.

- Arithmétique.
  - Affichage.
  - Addition.
  - Soustraction.
  - Multiplication.
  - Division.

Daemonium Albus,
blaizard@caramail.com