RSA
|
Contient des fonctions permettant de générer les clefs RSA et de les utiliser pour chiffrer et déchiffrer. Plus de détails...
#include "rsamaths.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include "pointeurs.h"
#include <time.h>
Fonctions | |
GRDNB | calcul_e (GRDNB phi_n, GRDNB *d) |
Permet de calculer e et d à partir de phi(n) tel que e * d = 1 mod phi(n) Plus de détails... | |
int | aleatoire (int a, int b) |
Génére alétoirement un entier entre a et b, les deux inclus, avec a <= b. Plus de détails... | |
GRDNB | rabinmillerdeux () |
Génére un entier ayant une très forte chance d'être premier. Plus de détails... | |
GRDNB | aleaGRDNB (int taille, int base) |
Génére un entier aléatoire d'une taille et base précises. Plus de détails... | |
void | chiffrer (char *fichier, char *fichdest, GRDNB n, GRDNB a) |
Chiffre un fichier selon la clef a (d ou e, tout dépend le contexte de l'appel, signature ou chiffrement) et son produit pq = n et écrit le résultat dans fichdest. Plus de détails... | |
void | dechiffrer (char *fichier, char *fichdest, GRDNB n, GRDNB a) |
Dechiffre un fichier selon la clef a (e ou d, tout dépend le contexte de l'appel, vérification de signature ou déchiffrement) et son produit pq = n et écrit le résultat dans fichdest. Plus de détails... | |
int | tailleNombre (int nombre, int base) |
Permet de savoir quelle taille le nombre prend à écrire dans une base donnée. Plus de détails... | |
Contient des fonctions permettant de générer les clefs RSA et de les utiliser pour chiffrer et déchiffrer.
GRDNB aleaGRDNB | ( | int | taille, |
int | base | ||
) |
Génére un entier aléatoire d'une taille et base précises.
[in] | taille | Un entier spécifiant la taille que le nombre généré doit respecter. |
[in] | base | Un entier spécifiant la base. |
Exemple : aleaGRDNB(5,10) = 77760 (taille = 5, base 10).
Vous n'aurez jamais aleaGRDNB(5,10) = 1452 (car le résultat doit être de taille 5)
int aleatoire | ( | int | a, |
int | b | ||
) |
Génére alétoirement un entier entre a et b, les deux inclus, avec a <= b.
[in] | a | est un entier |
[in] | b | est un entier tel que b >= a |
Permet de calculer e et d à partir de phi(n) tel que e * d = 1 mod phi(n)
[in] | phi_n | Un grand nombre phi_n |
[out] | d | Addresse du GRDNB de la clef privée |
Cette fonction génére aléatoirement e impair et non divisible par 5, et recherche e * d + phi_n * k = pgcd(e,phi_n) via euclide étendu.
Tant que pgcd(e,phi_n) différent de 1, on régénère e et on recommence.
Chiffre un fichier selon la clef a (d ou e, tout dépend le contexte de l'appel, signature ou chiffrement) et son produit pq = n et écrit le résultat dans fichdest.
[in] | fichier | Chaine de caractères contenant le chemin relatif ou absolu du fichier à chiffrer, accessible en lecture. |
[in] | fichdest | Chaine de caractères contenant le chemin relatif ou absolu du fichier chiffré, accessible en écriture, créé s'il n'existe pas et écrasé s'il existe. |
[in] | n | C'est le produit p*q en base 2, qui va servir ici de modulo à toutes les données chiffrées. nb de bits(n) > 8 (taille d'un caractère). |
[in] | a | C'est l'exposant en base 2 de toutes les données chiffrées, d ou e selon que l'on signe avec sa clef privée ou que l'on chiffre avec la clef publique du destinataire. |
Dechiffre un fichier selon la clef a (e ou d, tout dépend le contexte de l'appel, vérification de signature ou déchiffrement) et son produit pq = n et écrit le résultat dans fichdest.
[in] | fichier | Chaine de caractères contenant le chemin relatif ou absolu du fichier à déchiffrer, accessible en lecture. |
[in] | fichdest | Chaine de caractères contenant le chemin relatif ou absolu du fichier déchiffré, accessible en écriture, créé s'il n'existe pas et écrasé s'il existe. |
[in] | n | C'est le produit p*q en base 2, qui va servir ici de modulo à toutes les données chiffrées. nb de bits(n) > 8 (taille d'un caractère). |
[in] | a | C'est l'exposant en base 2 de toutes les données chiffrées, d ou e selon que l'on déchiffre avec sa clef privée ou que l'on vérifie une signature avec la clef publique de l'émetteur. |
GRDNB rabinmillerdeux | ( | ) |
Génére un entier ayant une très forte chance d'être premier.
int tailleNombre | ( | int | nombre, |
int | base | ||
) |
Permet de savoir quelle taille le nombre prend à écrire dans une base donnée.
[in] | nombre | Un entier à tester. |
[in] | base | La base dans laquelle on veut savoir la taille. |
Il suffit de compter le nombre de fois que le nombre est divisible entièrement par la base donnée.