Algorythme [générateur de clé ]

Réponses à toutes vos questions après le Bac (Fac, Prépa, etc.)
ThekamikazeFou
Membre Relatif
Messages: 403
Enregistré le: 12 Juin 2012, 15:26

Algorythme [générateur de clé ]

par ThekamikazeFou » 11 Fév 2013, 20:59

Bonjour pour un projet qui est le décryptage d'information je souhaite généré une clé qui me permet de retrouver le code de sécurité.
mais je bloque pour résoudre une équation;
j'ai :






voila donc ici je génère une clé.

un autre programme à pour but de retrouver le mot de passe grace à la clé sauf que je bloque.

j'ai donc :
(sauf que informatiquement cela na pas de sens)
donc :



maintenant comment je fais pour avoir le code en fonction de la clé? je tente par implication?
merci !



Avatar de l’utilisateur
fatal_error
Membre Légendaire
Messages: 6610
Enregistré le: 22 Nov 2007, 12:00

par fatal_error » 12 Fév 2013, 08:31

ben t'as qu'à poser x=code et résoudre l'équation en x:
c = sqrt(x)+xsqrt(x)+x^2+x/2

En posant X=sqrt(x), on a
c = X + X^3 + X^4 + X^2/2

cqui va te donner plusieurs solutions numériques. Comme a priori x c'est un entier, t'as intérêt à tester les x entiers pres de tes solutions (problemes d'arrondis)
la vie est une fête :)

ThekamikazeFou
Membre Relatif
Messages: 403
Enregistré le: 12 Juin 2012, 15:26

par ThekamikazeFou » 12 Fév 2013, 17:14

alors je veux bien j'ai donc ceci :
X^4+X^3+X^2/2+X-a=0
avec X = sqrt(x)
sauf que je ne vois pas comment résoudre l'équation sachant que a est variable en fonction de X...
http://www.wolframalpha.com/input/?i=X%5E4%2BX%5E3%2BX%5E2%2F2%2BX-a&dataset=

les racines de X sont elles juste? c'est un peu effrayant a vrai dire^^

Avatar de l’utilisateur
fatal_error
Membre Légendaire
Messages: 6610
Enregistré le: 22 Nov 2007, 12:00

par fatal_error » 12 Fév 2013, 17:33

donc déjà je sais pas pourquoi tu fais intervenir a, alors que l'équation proposée c'est :
c = X + X^3 + X^4 + X^2/2


Ensuite, je sais pas pourquoi tu dis que c dépend de X alors que c'est le contraire. C'est X qui dépend de c.

on a la paire
l'idée, c'est : avec le code, tu génères la clé.
Avec seulement la clé (et la connaissance de la méthode d'encryption), tu retrouves le code.

Si tu poses code=1.
calcul de la clé
x=code=1
c = sqrt(x)+xsqrt(x)+x^2+x/2 = 1+1+1+1/2 = 7/2
ca veut dire qu'avec le code 1, on génère la clé 7/2.

calcul du code correspondant à la clé 7/2
En posant X=sqrt(x), on a
7/2 = X + X^3 + X^4 + X^2/2
on cherche X...
http://www.wolframalpha.com/input/?i=+X+%2B+X^3+%2B+X^4+%2B+X^2%2F2+-+7%2F2
on trouve X=1
donc x=X^2 = 1
la vie est une fête :)

ThekamikazeFou
Membre Relatif
Messages: 403
Enregistré le: 12 Juin 2012, 15:26

par ThekamikazeFou » 12 Fév 2013, 18:14

alors oui j'ai bien compris, mais informatiquement ce n'est pas réalisable puisqu'il me faut les solutions en fonction de c.
On ne connais pas la valeur de c lorsque l'on "fait" le programme, donc il s'agit ici aussi d'une variable, mais qui devient constante lorsque l'on execute le programme.
avec vous compris? ^^
donc est ce que je peux exprimer les racine en fonction de c ?

Black Jack

par Black Jack » 12 Fév 2013, 18:34

Si la clé est "valide" :
code = (ent(clé^(1/4)))²
Avec ent pour "partie entière".

recalculer ensuite, à partir du code trouvé : V(code) + (V(code))³ + code² + code/2 et vérifier si on retrouve la clé.
Si oui, c'est OK
Si non, c'est que la clé n'était pas valide.

Les clés valides les plus petites sont :
0
28
332
1536
4648
11060
22548
41272
69776
110988
168220
245168
345912
474916
637028
837480
1081888
1376252
1726956
2140768
2624840
3186708
3834292
4575896
5420208
6376300
7453628
8662032
10011736
11513348
13177860
15016648
17041472
19264476
21698188
24355520
27249768
30394612
33804116
37492728
41475280
45766988
50383452
55340656
60654968
66343140
72422308
78909992
85824096
93182908
101005100
109309728
118116232
127444436
137314548
147747160
158763248
170384172
182631676
195527888
209095320
223356868
238335812
254055816
270540928
...

Vérifie.

:zen:

ThekamikazeFou
Membre Relatif
Messages: 403
Enregistré le: 12 Juin 2012, 15:26

par ThekamikazeFou » 12 Fév 2013, 19:19

Hum je ne crois pas avoir tout bien compris.
D'ou viens ceci : code = (ent(clé^(1/4)))² ?
le problème c'est qu'on à la clé et non le code, c'est le code que le cherche dans cette expression : V(code) + (V(code))³ + code² + code/2 = cle

c'est ce que tu as fais?

merci!

Edit : j'ai essayé avec ta formule mais on est très loin du résultat ^^

Avatar de l’utilisateur
fatal_error
Membre Légendaire
Messages: 6610
Enregistré le: 22 Nov 2007, 12:00

par fatal_error » 12 Fév 2013, 19:57

avez vous compris? ^^

oui j'ai compris.

Tu n'es pas obligé d'avoir la solution littérale. Tu peux très bien faire une résolution numérique.
la vie est une fête :)

ThekamikazeFou
Membre Relatif
Messages: 403
Enregistré le: 12 Juin 2012, 15:26

par ThekamikazeFou » 12 Fév 2013, 20:01

et justement on en revient au problème de base.
comment résoudre X^4+X^3+X^2/2+X-C= 0 non ?
et je ne vois pas comment résoudre une tel équation.

Black Jack

par Black Jack » 12 Fév 2013, 20:08

ThekamikazeFou a écrit:Hum je ne crois pas avoir tout bien compris.
D'ou viens ceci : code = (ent(clé^(1/4)))² ?
le problème c'est qu'on à la clé et non le code, c'est le code que le cherche dans cette expression : V(code) + (V(code))³ + code² + code/2 = cle

c'est ce que tu as fais?

merci!

Edit : j'ai essayé avec ta formule mais on est très loin du résultat ^^


Ben oui,

Exemple numérique:

Soit la clé donnée : 37492728 (c'est une clé valide).

Je calcule :
code = (ent(clé^(1/4)))²
code = (ent(37492728^(1/4)))² = (ent(78,25...))² = 78² = 6084

Et on peut vérifier que avec ce qu'on a trouvé, soit code = 6094, la clé est bien:

V(code) + (V(code))³ + code² + code/2 = V6084 + (V6084)³ + 6084² + 6084/2
= 37492728, donc c'est bon, on retrouve bien la clé à partir de laquelle on a calculé le code.
----> on peut dire que la clé donnée (soit 37492728) est valide et que le code qui lui correspond est 6084.
*****
Si on donne une clé non valide, par exemple 37492726
on trouve code = (ent(clé^(1/4)))² = 6084 (encore)

En repartant du code trouvé, on recalcule la clé et on arrive à 37492728 ... qui n'est pas la bonne clé ---> on peut dire que la clé donnée n'est pas valide et qu'il n'y a pas de code qui lui correspond.
*****

:zen:

ThekamikazeFou
Membre Relatif
Messages: 403
Enregistré le: 12 Juin 2012, 15:26

par ThekamikazeFou » 12 Fév 2013, 20:37

Oui en effet merci beaucoup cela fonctionne ! c'est la puissance (1/4) en C qui ne fonctionnait pas, d'ou des résultats incohérents!
mais j'aurais besoin de savoir, comment as tu trouvé que code = (ent(clé^(1/4)))² ?

hum a cause de la racine je vais avoir beaucoup de problème (en terme de signe signification, je passe de 4567 à 4600 par exemple.. )

Black Jack

par Black Jack » 13 Fév 2013, 14:32

A partir de clé = X + X^3 + X^4 + X^2/2 (avec X = Vx)

X étant entier.

(X+1)^4 = (X²+2X+1)² = X^4 + 4X² + 1 + 6X³+2X² + 4X
(X+1)^4 = X^4 + 6X³ + 6X² + 4X + 1

(X+1)^4 - X^4 = 6X³ + 6X² + 4X + 1
et 6X³ + 6X² + 4X + 1 > X³ + X²/2 + X (quel que soit X >= 0)

Donc se "tromper" de 1 sur la valeur de X entraine sur la valeur de "clé" une erreur plus grande que d'assimiler "X + X^3 + X^4 + X^2/2" à X^4 et on connaît le sens de l'erreur.

On peut donc calculer X par X = ent(clé^(1/4))

Et ensuite déduire le code x par X = vx ---> code = (ent(clé^(1/4)))²

Ceci n'est vrai que si la clé donnée est une clé valide.
Il faut donc après avoir calculé le code par Code = (ent(clé^(1/4)))², recalculer la clé qui émanerait de ce code.
Si on retrouve la clé donnée, le code calculé est correct.
Si on ne retrouve pas la clé donnée, c'est que la clé donnée n'était pas valide.
*****

Il y a sûrement des précautions pour coder cela (en C ou en n'importe quoi) pour éviter de se faire blouser par les "arrondis" des calculs.
Mais à condition d'utiliser les bons types de variables et réfléchir un peu (surtout dans la comparaison de la clé donnée et de la clé recalculée à la fin), cela devrait pouvoir se faire.

En espérant ne pas avoir raconté trop de bêtises.


:zen:

ThekamikazeFou
Membre Relatif
Messages: 403
Enregistré le: 12 Juin 2012, 15:26

par ThekamikazeFou » 13 Fév 2013, 15:59

merci énormément black jack !
je vais pouvoir m'approfondir dans le sujet, malgrés ce que je pensais, il y a énormément de math dans la cryptologie ^^

bonne continuation ! :)

 

Retourner vers ✯✎ Supérieur

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 61 invités

Tu pars déja ?



Fais toi aider gratuitement sur Maths-forum !

Créé un compte en 1 minute et pose ta question dans le forum ;-)
Inscription gratuite

Identification

Pas encore inscrit ?

Ou identifiez-vous :

Inscription gratuite