IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Algorithmes et structures de données Discussion :

Cryptage / Caml et type Big_int


Sujet :

Algorithmes et structures de données

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 14
    Par défaut Cryptage / Caml et type Big_int
    Bonjour à tous,

    Je suis en train d'essayer d'élaborer un programme de cryptage RSA en Caml Light.

    Je rencontre quelques difficultés, dans l'utilisation du type Big_int de Caml Light.

    La premiere est que la fonction power_big_int_positive_big_int (exponentiation du premier argument à la puissance second argument)
    est bugguée, elle ne renvoie pas les bons resultats dans la plupart des cas.
    C'est un bug connu, mais qui n'a pas pour autant été corrigé dans la derniere version disponible pour windows (0.74) de Caml Light.

    La deuxieme difficulté que je rencontre, est la suivante :
    Ma fonction de decryptage (qui prend pour argument n , d (la clé privée) et M le nombre à decrypter ) me renvoie un "Uncaught exception : Out of Memory" lorsque je tente de prendre :

    n=334411751 , d = 284254577 , M = 66875021

    Néanmoins, si je rentre seulement les instructions de ma fonction directement, pas de out of memory, mais le calcul s'éternise.
    (Est il normal que cela mette autant de temps à décrypter pour une clé de seulement 30 bits ? )


    Bref que de problemes j'espere que vous pourrez m'apporter un peu d'aide...
    Merci !

  2. #2
    Expert confirmé
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Par défaut
    Caml Light est un langage abandonné... Pour un projet sérieux il faut utiliser OCaml.

    --
    Jedaï

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 14
    Par défaut
    Bonsoir,

    je viens d'installer Ocaml, pourrais-tu m'indiquer quelles sont les librairies à charger pour pouvoir utiliser des grands entiers, ainsi que les operations associées ?

    Merci.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 14
    Par défaut
    Je suis parvenu à les trouver, et j'ai à peu pres compris comment m'en servir.

    Néanmoins, il subsiste un probleme, celui du débordement de mémoire
    "Out of memory during evaluation."

    J'ai tenté de calculer 128 à la puissance 5320923 par la fonction power_big_int_positive_big_int , mais encore "out of memory".
    Je suis conscient qu'il s'agit de tres grands entiers, mais n'y a t-il pas un moyen d'éviter cela ?

    Merci.

  5. #5
    Expert confirmé
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Par défaut
    128 à la puissance 5320923 ? (10^2)^5000000, autrement dit 10^(10^7) supérieur à 2^(10^7), autrement dit un nombre qu'on ne peut stocker sur moins de 1 Mo (largement sous évalué et avec une méthode de stockage idéale !) ? As-tu vraiment besoin de tels nombres ?

    Essaie de coder la mise à la puissance avec une boucle, pour vérifier si l'implémentation supporte cette taille.

    --
    Jedaï

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 14
    Par défaut
    Mon programme doit pouvoir crypter et decrypter en RSA avec des clés assez grosses (mais raisonnables).
    Je crois que le calcul précédent à été induit lors du décryptage avec une clé de 30 bits ou même moins
    (générée ici http://www.bibmath.net/crypto/moderne/rsa.php3)
    Donc je suppose que j'aurai besoin de manipuler au moins d'aussi grands nombres, à moins que je ne m'y prenne mal

  7. #7
    Expert confirmé
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Par défaut
    Tu t'y prend mal à coup sûr ! Par exemple tu ne fais pas de la mise à la puissance modulo, mais de la mise à la puissance directe puis du modulo, et c'est pour ça que tu arrives à ces chiffres ridiculement grands...

    --
    Jedaï

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 14
    Par défaut
    Voila c'est cela !
    Comment pourrais-je faire pour améliorer ça ? :/

    PS : j'ai codé la mise à la puissance comme tu me l'a dis, avec une boucle, si cela ne me renvoie pas de out_of_memory, en revanche cela met un temps infini, j'ai lancé le calcul cette nuit, et il n'est toujours pas terminé... Mais bon si tu me dis qu'on peut se passer d'aussi grands nombres, c'est inutile de toute façon

    Edit : Peut-être en codant une fonction de puissance qui prenne le modulo à chaque multiplication effectuée ?

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 14
    Par défaut
    Probleme résolu

Discussions similaires

  1. openLDAP : changer le type de cryptage des MDP
    Par IvyAlice dans le forum Applications et environnements graphiques
    Réponses: 4
    Dernier message: 12/12/2011, 11h26
  2. Elément "Value type" dans une requête CAML
    Par ludojojo dans le forum SharePoint
    Réponses: 1
    Dernier message: 27/04/2010, 15h24
  3. [Caml] Type image et matrice
    Par marcassin92 dans le forum Caml
    Réponses: 2
    Dernier message: 05/01/2010, 19h47
  4. Big_int sous caml light
    Par tonio131 dans le forum Caml
    Réponses: 1
    Dernier message: 31/05/2009, 17h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo