[Func] Conversion millisecondes en y/d/h/m/s/m

Partagez des fonctions et des UDF AutoIt.
Règles du forum
.
Répondre
Alex74
Niveau 4
Niveau 4
Messages : 73
Enregistré le : ven. 15 avr. 2011 15:24
Status : Hors ligne

[Func] Conversion millisecondes en y/d/h/m/s/m

#1

Message par Alex74 »

Bonjour à tous,

Pour mes besoins, j'ai du effectuer des conversions de millisecondes en années/jours/heures/minutes/secondes/millisecondes. Or je me suis retrouvé bloqué car je devais manipuler des nombres très grands (de l'ordre de 80^60) pour mes conversions. Or, apparemment de base, Autoit ne le permet pas. Heureusement, je suis tombé sur l'UDF BigNum.au3 (qui mériterait bien d'être inclus dans Autoit d'ailleurs):

http://www.autoitscript.com/forum/topic ... ignum-udf/

J'ai donc pu coder la fonction dont j'avais besoin. Elle permet la conversion en s'affranchissant des limites sur les grands nombres et renvoie une chaine ou un tableau.

Je ne savais pas trop si je devais la poster car elle utilise un UDF qui n'est pas inclus dans Autoit mais bon...Ce n'est pas la fonction de l'année ( :D ) mais si elle peut servir à quelqu'un un, ce sera toujours ça.

► Afficher le texte
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2272
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [Func] Conversion millisecondes en y/d/h/m/s/m

#2

Message par jchd »

Pardon ? 80^60 pour gérer des millisecondes ???
Tu as un Kolossal problème avec tes unités.
AutoIt gère des entiers signés sur 32 ou 64 bits selon les besoins, soit un MaxInt positif
MS = 18446744073709551615.
Imaginons un instant que ce nombre MS soit un compte de ms, c'est donc
S = MS / 1000 ≃ 1.8446744073709552 10^16 secondes,
soit
M = S / 60 ≃ 3.074457345618259 10^14 minutes
soit
H = S / 60 ≃ 5.124095576030432 10^12 heures
soit
J = M / 24 ≃ 2.1350398233460132 10^11 jours
soit
A = J / 365.25 ≈ 5.845420460906265 10^8 années solaires moyennes

As-tu _vraiment_ le besoin impérieux de travailler à la milliseconde près sur des périodes de dépassant 584 millions d'années ? Cela n'a aucun sens physique.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Alex74
Niveau 4
Niveau 4
Messages : 73
Enregistré le : ven. 15 avr. 2011 15:24
Status : Hors ligne

Re: [Func] Conversion millisecondes en y/d/h/m/s/m

#3

Message par Alex74 »

En fait, je l'ai adapté pour un autre calcul qui me permet de connaitre le temps maximal pour effectuer toutes les possibilités d'une action (équivalent au max à 94^64) par rapport à un nombre d'actions par seconde cette fois.
Là, je l'ai adapté aux millisecondes par soucis de précision et simplifiée pour quelle soit facilement modifiable. J'aurais peut-être pas dû :roll:
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2272
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [Func] Conversion millisecondes en y/d/h/m/s/m

#4

Message par jchd »

Cela a encore moins de sens. Tu peux expliquer comment tu parviens à ces valeurs titanesques n'ayant, encore une fois, aucun sens physique quand il s'agit d'opérations par seconde.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Alex74
Niveau 4
Niveau 4
Messages : 73
Enregistré le : ven. 15 avr. 2011 15:24
Status : Hors ligne

Re: [Func] Conversion millisecondes en y/d/h/m/s/m

#5

Message par Alex74 »

On ne s'est pas bien compris : 94^64 est le nombre de possibilités résultant de la combinaisons de 2 facteurs, ce n'est pas le nombre de secondes. Mais j'ai du effectuer des calculs incluant un facteur temps sur ce total.
Enfin bref, si pas utile, vous pouvez mettre à la corbeille.
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2272
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [Func] Conversion millisecondes en y/d/h/m/s/m

#6

Message par jchd »

Alex74 a écrit :94^64 est le nombre de possibilités résultant de la combinaisons de 2 facteurs
C'est incompréhensible. Quels facteurs, par exemple ?
Mais j'ai du effectuer des calculs incluant un facteur temps sur ce total.
Un exemple du monde réel ?
Enfin bref, si pas utile, vous pouvez mettre à la corbeille.
Là n'est pas la question. Pourquoi avoir recours à _BigNum pour effectuer une simple conversion de temps en ms, c'est ça qui m'intrigue (hautement !) ? Le même calcul fonctionne très bien avec les entiers natifs d'AutoIt.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Alex74
Niveau 4
Niveau 4
Messages : 73
Enregistré le : ven. 15 avr. 2011 15:24
Status : Hors ligne

Re: [Func] Conversion millisecondes en y/d/h/m/s/m

#7

Message par Alex74 »

Un exemple concret : je me code un petit générateur de mots de passe et clé Wpa (que je change de temps en temps et comme j'ai la flemme de les taper à la main). Pour agrémenter mon interface, je me suis amusé à calculer et afficher certaines informations concernant le mot de passe crée dont le nombre de combinaisons possible ainsi que le temps maximum pour effectuer toutes les combinaisons à raisons d'un nombre donné de combinaisons par secondes. Purement informatif mais bon, il y a un calcul à effectuer pouvant impliquer des grands nombres.

Le 94^64 correspond au nombre de combinaisons possible d'un mot de passe contenant des alphanumériques des 3 types ainsi que des caractères dits 'spéciaux ( 10 + 26 + 26 + 32) et d'une longueur de 64 caractères.

Donc rien que pour pouvoir reprendre le résultat de 94^64, je suis obligé d'utiliser l'UDF BigNum et ensuite pour effectuer des calculs sur ce résultat, je dois tout au long de ma fonction utiliser les fonctions de l'UDF.

A moins que vous ayez une autre méthode, dans ce cas là, je suis preneur aussi...

Après réflexion, c'est clair qu'en voulant simplifier la fonction, j'ai peut-être perdu en route son côté pratique par rapport à l'utilisation que j'en ai faites au départ. Mais comme j'en ai une utilisation bien spécifique et que j'ai trouvé très intéressante la possibilité de manipuler des grands nombres pour ce genre de calculs, j'ai souhaité l'adapter à un calcul simple. A tort peut-être...
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11773
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [Func] Conversion millisecondes en y/d/h/m/s/m

#8

Message par Tlem »

A partir du moment ou le calcul dépasse quelques années (je dirais une dizaine ou une vingtaine pour être large), je ne vois pas vraiment l'intérêt de spécifier un délai exact !!!
Vous imaginez-vous lancer le calcul d'une clé sur une durée aussi large ?
A la limite, spécifier le nombre de combinaison d'accord, mais une durée, cela n'a pas réellement de sens.

Peut être que dans quelques années l'ordinateur Quantique sera une réalité pour tout le monde et dans ce cas, les durées de calcul ne seront plus ce qu'elles étaient ... :lol:
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Alex74
Niveau 4
Niveau 4
Messages : 73
Enregistré le : ven. 15 avr. 2011 15:24
Status : Hors ligne

Re: [Func] Conversion millisecondes en y/d/h/m/s/m

#9

Message par Alex74 »

Oui, je suis d'accord, d'ailleurs au dessus de 9999 années, j'affiche 'supérieur à 10 000 ans' sinon ça ne rentre plus dans ma GUI :mrgreen: Mais bon, j'aime bien mener mes calculs jusqu'au bout... :wink:
Tlem a écrit :Peut être que dans quelques années l'ordinateur Quantique sera une réalité pour tout le monde et dans ce cas, les durées de calcul ne seront plus ce qu'elles étaient ... :lol:
Justement là, ou à l'heure actuelle les durée renvoyées semblent hors de la réalité, elle le seront beaucoup moins à ce moment là :wink:
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2272
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [Func] Conversion millisecondes en y/d/h/m/s/m

#10

Message par jchd »

S'il s'agit d'un calcul combinatoire exact, alors OK bignum peut certes s'avérer fort utile.

Mais dans le cas présenté, on peut tout à fait effectuer le calcul avec des flottants !
Pour obtenir 94^64, on fait :
► Afficher le texte
Pour savoir combien de temps il faudrait à un opposant pour tester l'espace des clés à raison de $N essais par ms :
► Afficher le texte

et on convertit le résultat en temps "humainement compréhensible" le plus bêtement du monde.

Ce calcul reposant sur une fiction, peu importe qu'il ne soit qu'approché à 10^-30 près. C'est comme vouloir exprimer la distance Terre - Lune à l'angström près, ça n'a aucun sens.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Avatar du membre
timmalos
Niveau 11
Niveau 11
Messages : 1970
Enregistré le : dim. 18 mai 2008 15:16
Status : Hors ligne

Re: [Func] Conversion millisecondes en y/d/h/m/s/m

#11

Message par timmalos »

Je precise pour les non mathématiciens que
Image
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2272
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [Func] Conversion millisecondes en y/d/h/m/s/m

#12

Message par jchd »

@Alex74,

Ne crois pas que j'aie quoi que ce soit contre toi ni contre le sérieux que tu as déployé pour proposer ce que tu penses être correct. Mon propos est simplement qu'il est saugrenu d'employer des moyens ultra-précis (e.g. BigNum) et très lourds pour exprimer un simple ordre de grandeur qui n'a aucune chance de se concrétiser jamais et dont le calcul approché direct peut se faire en deux lignes.

Transposé à la réalisation de programmes, tous languages confondus, cela revient à s'acharner pendant des jours, voire des semaines, à dénicher des optimisations prématurées particulièrement subtiles et difficiles à maintenir pour gagner 43 ns, sans jamais se poser la question de l'adéquation de l'agorithme employé pour aborder le problème.

La beauté du geste ne s'applique pas ici : seule l'efficacité judicieuse compte.

Par contre, si tu es amené à te coltiner un calcul de combinatoire je suis tout à fait d'accord avec toi sur la rapide nécessité de recourir à BigNum dès que les valeurs grandissent, du fait de l'explosion combinatoire et le besoin de rester en calcul entier.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Avatar du membre
ricky
Niveau 7
Niveau 7
Messages : 443
Enregistré le : ven. 06 févr. 2009 09:25
Localisation : Suisse
Status : Hors ligne

Re: [Func] Conversion millisecondes en y/d/h/m/s/m

#13

Message par ricky »

Hello,

merci pour ta fonction, je me suis permis de la reprendre et d'en faire une sans le bignum pour mes besoins :
► Afficher le texte
Celle-ci est plus rapide, pour 1000 fois le même calcul, j'ai moins de 1 s contre plus de 25 s.
Le calcul maximum, basé sur ceci :
jchd a écrit : MS = 18446744073709551615.
Me donne une valeur de : 292277265 y 159 d 8 h 16 m 25 s 807 m
Ce qui est amplement suffisant pour moi.

Merci pour ton partage
Avatar du membre
zeshrek
Niveau 10
Niveau 10
Messages : 984
Enregistré le : mer. 17 nov. 2010 09:31
Localisation : Sur ma chaise
Status : Hors ligne

Re: [Func] Conversion millisecondes en y/d/h/m/s/m

#14

Message par zeshrek »

Si je puis me permettre, sans même tenir compte de l'ordinateur quantique (qui a l'heure actuelle reste plus de la science fiction, puisqu'aux dernières nouvelles, on n'en est encore a chercher a fabriquer une mémoire et apres on s'interessera au processeur, c'est dire si il y a de la marge) ce calcul du temps de crackage du pass en force brute ne prend pas en compte la loi de Moore et donc les durées doivent etre singulièrement révisées a la baisse...
Doubler la puissance des ordis tous les 18 mois revient grossierement a diviser par 2 le temps de traitement a faire tous les 18 mois...
Si vis pacem para bellum
Alex74
Niveau 4
Niveau 4
Messages : 73
Enregistré le : ven. 15 avr. 2011 15:24
Status : Hors ligne

Re: [Func] Conversion millisecondes en y/d/h/m/s/m

#15

Message par Alex74 »

jchd a écrit :Ne crois pas que j'aie quoi que ce soit contre toi ni contre le sérieux que tu as déployé pour proposer ce que tu penses être correct. Mon propos est simplement qu'il est saugrenu d'employer des moyens ultra-précis (e.g. BigNum) et très lourds pour exprimer un simple ordre de grandeur qui n'a aucune chance de se concrétiser jamais et dont le calcul approché direct peut se faire en deux lignes.
Pas de soucis, j'avoue qu'avec du recul, je n'avais pas intégré ce paramètre à ma réflexion.

@ricky

De rien :wink:

@zeshrek

Je lisais justement un article sur la loi Moore il y a quelque temps et sur sa fin programmé/supposée pour 2020 car les transistors seront tellement petits que les électrons sortiront des fils.

Récemment, un chercheur en sécurité a réussi à l'aide de la puissance d'un cloud bien connu (1 000 000 de combinaisons testées à la seconde) à cracker une clé de 6 lettres (je ne connais pas les types composant la clé par contre) en 43 minutes.
Répondre