OVH Cloud OVH Cloud

Simple algo: 3e étape - attaque à clair ou chiffré connu

81 réponses
Avatar
Raymond H.
Bonjour,
avec l'algo suivant il n'est donc pas possible, à partir de l'algo
seulement, de trouver la clef ni le clair.
41 105 71 63 =k
51 52 53 =m
249 281 250 =c

c1=k1+k2+m1+m2
c2=k2+k3+m2+m3
c3=k3+k4+m3+k4 (k4 remplace aussi m4)

Donc,
1- la clef n'est pas trouvable par inversion de l'algo seul ou d'un calcul
quelconque (sans parler d'attaque à clair ou chiffré connu...)
2- le clair n'est pas trouvable par inversion de l'algo seul ou d'un calcul
quelconque (sans parler d'attaque à clair ou chiffré connu...)

J'ajoute donc maintenant un Xor et une addition au calcul de l'algo
ci-avant afin de tenter d'empêcher de trouver la clef ou le clair par le
moyen d'une attaque à clair ou chiffré connu. Voici le nouvel algo:

41 105 71 63 =k
51 52 53 =m
185 199 12 =c

c1=(((k1 + k2 + m1 + m2) xor k2) + k1) Mod 256
c2=(((k2 + k3 + m2 + m3) xor k3) + k2) Mod 256
c3=(((k3 + k4 + m3 + k4 ) xor k4) + k3) Mod 256 (k4 remplace aussi m4)

On fait donc:
c1:
41 + 105 + 51 + 52 = 249
249 xor 105 = 144
144 + 41 = 185
185 Mod 256 = 185 = c1


c2:
105 + 71 + 52 + 53 = 281
281 xor 71 = 350
350 + 105 = 455
455 Mod 256 = 199 = c2

c3:
71 + 63 + 53 + 63 = 250
250 xor 63 = 197
197 + 71 = 268
268 Mod 256 = 12 = c3

Ici on suppose encore qu'on ne fait pas de boucle avec la clef et
qu'elle
serait en réalité une sous chaîne générée par la clef et qu'elle serait de
la même longueur que le clair plus un caractère. Voilà pour cette tentative
d'empêcher de trouver la clef par une attaque à
clair ou chiffré connu.

J'attends donc vos suggestions, et vous donne un test pour trouver soit
la clef (k) ou le clair (2m). Voici donc le clair et son chiffré plus un
autre chiffré crypté avec la même clef que le clair/chiffré. Je n'ai pas eu
besoin d'utiliser le modulo dans 1c ni 2c puisque aucune des valeurs des
deux chiffrés n'ont dépassées 255.

? ? ? ? = k
8 12 21 = 1m
32 51 62 = 1c

? ? ? ? = k
? ? ? = 2m
53 22 44 = 2c

Bon calculs!
Raymond H.

10 réponses

5 6 7 8 9
Avatar
Raymond H.
"Johann Dantant" a écrit dans
le message de news: 41e78189$0$19432$
<snip de 3 page de chiffres, désolé mais je n'ai plus de papier listing
sous
la main. Le copié-collé est une abomination et on devrait l'interdire pour
Raymond>


abomination ?

Je répète parce que manifestement tu n'as pas lu mon message : tu n'es pas
lisible parce que tu n'es pas concis / rigoureux / clair.

recopiant bêtement


J'espère que vous comprendrez pourquoi je n'aime pas ces genres
d'interventions. Je les trouve méprisant. Et ils le sont. Vous jugez et
ne semblez pas vous en rendre compte.

Non, les chiffres ne valent pas mille mots. Réfléchis un peu,


J'ai déjà plus que réfléchis, j'ai constaté. Si ça ne vaut pas mille
mots pour vous alors pour moi 'oui'. Si quelqu'un tente de m'expliquer un
calcul par du français, il se peut que je ne comprenne pas sa façon de
s'expliquer. Mais si on me montre juste le calcul lui-même, alors là, d'un
seul coup d'oeil je peux comprendre sans même lire les explications.
Pourquoi serais-je le seul ainsi?

Je répépépépéte pour Raymond qui est manifestement un incompétent de
mauvaise fois en plus. OUI, le fait de ne pas connaître un mot de
vocabulaire montre ton incompétence en vocabulaire.


Alors, là vous débordez d'orgueil. J'aurais honte.

Donc, si quelqu'un a le malheur de ne pas connaître tous les mots du
dictionnaire il est un incompétent? C'est ce que vous venez d'écrire. Et
si vous dite que vous parlez de la majorité des mots les plus utilisés et
non pas de tous, alors qui êtes-vous pour juger quel dialecte doit être
accepté? Ici au Québec, il y a plusieurs dialectes juste pour le français.


Il n'y a pas de honte,
il n'y a pas mort d'homme, on s'en remet, on peut vivre sans, on peut
progresser, mais en l'occurence on est incompétent. Cela ne devient une
tare
que quand on persiste à vouloir le rester.


À vouloir le RESTER? Il serait donc déjà une tare? Encore un autre
jugement. Si vous voulez savoir ce qu'est un taré alors lisez la bible et
vous verrez que vous n'avez pas à lancer la pierre à d'autres. Vous êtes
aveugle en jugeant de la sorte puisque vous ne connaissez pas nécessairement
si les gens ont dans une certaine mesure une déficience intellectuel
concernant l'expression verbale ou écrite. Alors, il serait bon de ne pas
fixer de standard à votre propre hauteur pour juger autrui. Il y a des gens
qui toutes leur vie auront de la difficulté à bien s'exprimer et qu'ils
auront fait 100 fois plus d'effort que vous même à s'exprimer verbalement ou
par écrit. Ont-ils des comptes à vous rendre pour vous expliquer leur
déficience avant que vous les acceptiez tel qu'ils sont sans étaler tout sur
la place publique? Voulez-vous les mettre de côté en les jugeant? Non.
Alors, pourquoi me jugez-vous si vous ne me connaissez pas personnellement.
Car ça fait déjà plusieurs qui me juge de la sorte sur ce forum. Vous
dois-je des comptes? Vous manquez d'expérience dans la vie ou bien vous
tourner autour de votre nombril sans réaliser la réalité de ce monde.
J'espère que vous comprenez. Si oui, alors vous ne direz plus que j'écris
comme je parle, ni que ma foi est mauvaise. Tant mieux si vous êtes super
intelligent et si vous connaissez votre dictionnaire par coeur, je suis bien
content pour vous. Mais de grâce gardez votre vanité pour vous. Je parle
non seulement pour moi mais au nom de tous ceux qui se retrouvent dans ce
que je dis.


Pour en revenir à ton application
numérique (pardon, ton exemple sanguignolant), n'importe quel élève de CP
qui n'aurait pas ta mauvaise fois se rend compte simplement en ouvrant un
dictionnaire que deux mots considérés comme synonymes par le langage
courant
ne sont que très rarement absolument interchangeables,


Donc, si quelqu'un ne se rend pas compte de cela il serait de mauvaise
foi?

rigoureux. Or, que je sache, nous sommes ici dans le domaine de l'écrit,
il
n'y a pas lieu de mépriser ceux qui ne savent pas écrire, mais il faut à
tout le moins les encourager à progresser fissa-fissa.


Lisez plus haut ce que j'ai écris, et ne vous comparez pas à ceux que
vous ne voyez pas leur niveau intellectuel.

Ca ne prouve rien du tout. Pour moi aussi c'est une véritable torture
mentale lorsque je cherche à *comprendre* les idées que peut présenter
un


Christophe Henry,


Vous dites le mot 'AUSSI', comme si j'avais dit que c'était une
torture

mentale pour moi de comprendre Christophe Henry. Je vous fais remarquer
que

je respecte son vocabulaire et sa façon d'amener ses calculs. C'est du
contraire ici qu'il est question: de ceux qui parle contre mon
vocabulaire.
Ce n'est pas moi qui se plains, c'est vous.


Qui a dit que je ne respectait pas son vocabulaire ou son travail ???


Je parle de respecter le niveau de mon vocabulaire. C'est bien écrit.


Oui bien sûr. D'ailleurs, c'est bien connu, les logiciels commerciaux
n'existeraient pas sans les bénévoles qui aident les développeurs.


Pas d'accord. Faut pas généraliser.


Des exemples ??? Pour une fois, ça manque de chiffre.



L'exemple est moi-même. Je n'ai pas toujours été aidé dans mes
logiciels. Faut donc pas généraliser. D'autres ont appris la programmation
à l'école et ont dû s'acheter des livres et ont payé pour leurs cours. Etc.



Je n'ai pas l'intention de continuer ce genre de discussion. Si vous
n'aimez pas ma classe alors lisez les gens de votre 'haute classe'.
J'espère que vous saisissez la leçon.


Bonne journée
r.h.



Avatar
Raymond H.
"Christophe HENRY" a écrit dans le
message de news: cs84qm$1avr$

Je ne sais pas encore la façon que je vais adopter. En effet la clef
de
session serait aussi longue que le clair si on la conserverait en entier,
mais ce n'est pas le cas. Car ce serait seulement les derniers
caractères
...


J'attend les spécifications précises.


D'accord.

...
Mais dans l'autre façon de faire, la phrase de passe existerait
seulement pour que le système refuse le déchiffrage si ce n'est pas la
bonne phrase de passe qui est tapée.


Ce n'est pas le système qui va refuser. C'est l'interface graphique de
ton logiciel. Ce n'est pas un concept de cryptologie. Sépare les deux.


Je ne parlais pas du system hardware mais du logiciel dans l'ensemble de ses
fonctions. On ne peut pas vraiment le comprendre autrement logiquement.


L'avantage est que si l'utilisateur se trompe de clef lors du
déchiffrage, alors il ne chiffrerait pas le chiffré une 2e fois par
dessus par erreur en rendant le chiffré différent du chiffré
original.


C'est de la programmation d'interface utilisateur, pas de crypto.


Non, c'est de la crypto puisque c'est le rôle du code d'identification
de la phrase de passe. Le code d'identification est crypté et est dans le
chiffré et c'est ce code qui dit si le déchiffrement est accepté ou non,
sinon le déchiffrage chiffrerait autrement le cryptogramme puisque rien ne
l'empêcherait. Donc, la phrase de passe qui génère le code d'identification
fait partie du tout.

L'algo reçoit en entrée le Message,



Et voilà! C'est l'algo qui reçoit le message et cela grâce à la phrase
de passe qui elle produit le code d'identification pour le déchiffrage.
Donc, si l'algo reçoit en entré le clair pour le chiffrer, il reçoit aussi
en entré le chiffré pour le décrypter; et c'est le code d'identification qui
lui autorise, et ce code est dans le chiffré lui-même et a besoin d'être
déchiffrer pour comparaison avant de permettre le déchiffrement du reste.


J'ai pensé aussi, qu'avant de crypter la clef de session finale et
le
code d'identification (phrase de passe modifiée) je fais une
permutation des caractères de la clef de session finale (déjà
...
c™ , h4 , i= 105 , n0 . On déplace vers la droite le
caractère x 109 fois, le caractère y de 97 fois, le z de 99 fois, le b
de104 fois, le o de 105, le n de 110, le b de 109, le o de 97 et le n de
99 fois. Je ne l'ai pas essayé mais supposons que ça donnerait
onzbbnxyo . Ensuite on crypte une 2e fois : on crypte donc onzbbnxyo .
On pourrait répéter ces opérations 2, 5 ou 10 fois.


Substitution poly-alphabétique. Chiffre de Vernam.
C1 = M + 99
C2 = C1 + 7
C3 = C2 - 8
C4 = 51154 + C3

Compliqué, non ? Comment retrouver M avec C4 ?
Simple : M = C4 - 51252

Le clair comprend bien plus qu'un seul caractère ? Les matrices aussi.


Je ne sais pas trop si c'est seulement un exemple ou pour me dire autre
chose, puisqu'il ne correspond pas à mon explication.
Êtes-vous en train de donner juste un exemple (une idée) ou dire que votre
exemple n'est pas sûr.. ?

Combien de temps prend-il pour faire l'analyse pour trouver les clefs
possibles de 32 bits dans le même exemple auparavant donnée ?


2 minutes pour toutes les énumérer.


C'est quand même assez rapide.

De plus, une clé plus longue que le clair ne solidifie pas l'algo et,
dans le cas présent, affaiblit le chiffrement.


Je ne vois pas comment elle pourrait affaiblir le chiffrement
puisque
c'est seulement les x premiers caractères (de la même longueur que le
clair) qui seraient utilisés.


Je travaille sur les spécifications publiées. L'algorithme 'simple algo
avec xor' servant à chiffrer sur 3 octets utilise le quatrième octet de
la clé, qui en fait d'ailleurs 4.


Les x premiers caractères + 1 :-) J'avais oublié de mentionner le petit
dernier.

Bonne journée
Raymond H.



Avatar
Mister Jack
Salut !

Mais est-ce que votre code test seulement 640 clefs? Ou plus?
Je n'ai

pas bien compris comment le calcul vous dirait à l'avance le nombre de
possibilité de clefs valides. Car mon code me le dit juste en dernier quand
il a testé les 4 milliards de possibilités.


Regardez le code C bien crade de faignant (dixit Henry) que j'ai posté
ici. Il montre comment éviter de tester la majorité des clés.
Mon code ne teste pas que 640 clés dans l'exemple donné. Il en teste
plus, mais sait éviter de se fourvoyer.

Si vous voulez, passez-moi vos tests 64bits et 128bits sur mon mail et je
vous renverrai les résultats. Ca ira + vite chez moi.


Ça m'intéresse. Voici les données:
Avec une clef de 64 bits:
Clair 100-100-100-100-100-100-100
Chiffré : 216-216-216-216-216-216-120


Bon, rapide :

:~$ time ./casto
Recherche terminée
3201024 clés

real 0m12.851s
user 0m12.850s
sys 0m0.000s

Le fichier contenant les clés fait 25.608.224 octets, et 6.959.168 une
fois compressé... je pense qu'il n'est pas nécessaire de vous demander
si vous tenez vraiment à l'avoir ?

Avec une clef de 128 bits:
Clair 100-100-100-100-100-100-100-100-100-100-100-100-100-100-100
Chiffré : 216-216-216-216-216-216-216-216-216-216-216-216-216-216-120


Là j'ai arrêté quand le fichier des clés générée a finit de remplir ma
petite partition... il y avait déjà plus de 27 millions de clés trouvées.
Enfin, l'intérêt c'est quand même de trouver 1 clé... les autres... bof.
:~$ time ./casto
[K(1)=[080808080808080-76]

real 0m0.003s
user 0m0.000s
sys 0m0.000s

Donc en quelques ms on trouve une clé :
[ 0 8 0 8 0 8 0 8 0 8 0 8 0 8 0 180 ]

Je ne garantis pas tous les résultats puisque j'ai réécris un code
encore plus moche que le premier... The Obfuscated Allcrypter Code
Challenge... ;-) Mais à première vue ça doit aller.

@Tchao !
--
Mister Jack (MJ)
"Linux c'est pas pour les manchots !"
Un don pour les victimes du Tsunami : http://www.croix-rouge.fr/


Avatar
Mister Jack
Salut !

Je ne sais pas encore la façon que je vais adopter.


J'attend les spécifications précises.


Pareil.

C'est de la programmation d'interface utilisateur, pas de crypto. Si tu
mets des scories dans l'algorithme, tu risques de rendre plus difficile
son étude (par moi, en tout cas) sans le rendre plus fort.
Sépare-donc la programmation de l'algorithme.


Clairement ce qu'il faut faire... Parce que un algorithme qui clique sur
'crypter' j'aime pas... ;-)

Combien de temps prend-il pour faire l'analyse pour trouver les clefs
possibles de 32 bits dans le même exemple auparavant donnée ?


2 minutes pour toutes les énumérer. Une clé valide est trouvée tout de
suite. Mon programme est plutôt une preuve de concept mettant en échec
l'utilisation combinée du xor et de l'addition.


C'est surtout une très belle démonstration de ce que permet l'algèbre
pour révéler les dessous d'un algorithme, et détecter les défauts.
D'ailleurs ça me rappelle mes cours d'algèbre. Je ne pratique plus
beaucoup mais faut vraiment que je m'y remette telleemnt ça peut être
puissant.

Celui de Jack devrait
être pris comme référence, vu qu'il est très simple à lire.


C'est juste une méthode barbare...

Le mien, donné dans ce fil, résistera bien plus à de futures
modifications de l'algorithme.


Clairement.

Amicalement,
--
Mister Jack (MJ)
"Linux c'est pas pour les manchots !"
Un don pour les victimes du Tsunami : http://www.croix-rouge.fr/


Avatar
Christophe HENRY

...
Substitution poly-alphabétique. Chiffre de Vernam.
C1 = M + 99
C2 = C1 + 7
C3 = C2 - 8
C4 = 51154 + C3

Compliqué, non ? Comment retrouver M avec C4 ?
Simple : M = C4 - 51252

Le clair comprend bien plus qu'un seul caractère ? Les matrices aussi.


Je ne sais pas trop si c'est seulement un exemple ou pour me dire autre
chose, puisqu'il ne correspond pas à mon explication.
Êtes-vous en train de donner juste un exemple (une idée) ou dire que votre
exemple n'est pas sûr.. ?


L'exemple que j'ai donné est l'illustration que l'empilement de
brouillages donne un semblant de sécurité. Plus concrètement, la
composition de deux substitutions est une substitution, pareil pour les
permtutations, transpositions.

Or, la totalité de tes calculs sont des substitutions et des
transpositions. Même le xor est une subsitution de type
poly-alphabetique (vernam), tout comme l'addition modulaire (césar).

Empiler les procédés va peut-être embrouiller le développeur et son
programme, mais pas les matrices qui gèrent très bien les compositions.

--
Christophe HENRY
(sans lkm)
GnuPG : 3922239E60036EC86BF7268A877C52AC 4883C02A


Avatar
Mister Jack
Salut !

Mmmh ! Du code bien crade qui tourne du tonnerre. Tu as été un peu dur
quand même. En ajoutant des variables tu aurais pu généraliser pour
n'importe quel clair et n'importe quel chiffré.


Bah j'ai un code généralisé... Mais il est vraiment incompréhensible...
et tout aussi bourrin... Bon, je le colle à la fin du message...

== Le principe =
<plein de trucs/>

K=M1*DELTA(C-M2, M3, M4)


Je crois que j'ai suivi.

Voici le programme en scilab. Son but est ainsi de réaliser la fonction
inverse du simple algo plutôt que de passer en force brute. Ainsi, il
n'est (sauf erreur) pas sensible à la taille de la clé.


C'est intéressant, même si j'ai du mal à lire le code Scilab. Y'a moyen
d'avoir le même en Matlab ? Bon, OK, j'ai rien dis...
C'est clair que la méthode mathématique est plus élégante et met bien en
évidence ce qu'il se passe lorsque l'algo tourne, et ce qui pose
problème. J'aime bien.

Malheureusement, c'est pas mon truc... :( J'ai généralisé un peu le code
, et rendu le truc encore plus incompréhensible. Je sais bien qu'avec
des structures appropriées il pourrait être beaucoup plus lisible...
mais ça m'aurait prit un peu plus de temps alors vala encore du bourrin.
J'ai rajouté des commentaires au cas où, mais personne de sensé ne lira.
J'ai même mis mes accolades comme il faut... quel effort ! :D

--------------------------== Code ==-----------------------

#include <stdio.h>
#include <stdlib.h>

// C'est ici qu'on file les données ;
// - m est le clair qu'on termine par un 0 (zéro)
// - c est le chiffré
// - k c'est pour la clé... j'aurai pu faire une alloc, mais non ;-)
// - n c'est la taille du chiffré
// Suffit d'initialiser tout ça comme il faut, et penser aux tailles
// et ça roule.

unsigned char m[4] = {254,178,245,0};
char c[3] = {80,91,223};
unsigned char k[4] = {0,0,0,0};
int n = 3;

// 'i' sera l'index, et 'compteur' compte les résultats

int i = 1;
int compteur = 0;

// Fonction qui remonte dans l'arbre quand on s'est planté de branche
// En gros quand on trouve zéro en incrémentant, c'est qu'on a testé
// toutes les valeurs donc on remonte et on part sur la branche suivante

void retour ()
{
for (;(k[i]==0)&&(i!=0);k[--i]++);
if (i==0)
{
if (k[i]==0)
{
i=-1; // terminé
}else{
i=1;
}
}
}

// Fonction d'affichage des résultats. C'est le + lent.

void display()
{
int j;
printf("K(%i)=[ ",++compteur);
for (j=0;j<=n;j++)
printf("%i ",(unsigned)k[j]);
printf("]n");
}

// Fonction principale.

int main(int argc, char *argv[])
{
for(;i!=-1;) // tant qu'on a pas fini
{
if ((char)(((m[i-1]+m[i]+k[i-1]+k[i])^k[i])+k[i-1])==c[i-1])
{ // Si on est sur une bonne branche
if (i==n) // Si à la fin de la branche alors c une solution
{
display();
m[n]=++k[n]; // et on continue à parcourir
retour();
}else{ // Sinon on prolonge la branche
i++;
if (i==n)
m[n]=k[n];
}
}else{ // Pas sur une bonne branche
k[i]++; // On en essaie une autre
if (i==n)
m[n]=k[n];
retour();
}
}
printf("Fin de la recherche.n");
return 0;
}

Amicalement,
--
Mister Jack (MJ)
"Linux c'est pas pour les manchots !"
Un don pour les victimes du Tsunami : http://www.croix-rouge.fr/

Avatar
Johann Dantant
"Raymond H." a écrit dans le message de
news:R%MFd.34099$
"Johann Dantant" a écrit dans
le message de news: 41e78189$0$19432$
<snip de 3 page de chiffres, désolé mais je n'ai plus de papier listing
sous
la main. Le copié-collé est une abomination et on devrait l'interdire
pour


Raymond>


abomination ?


C'est pas dans ton dictionnaire.


Je répète parce que manifestement tu n'as pas lu mon message : tu n'es
pas


lisible parce que tu n'es pas concis / rigoureux / clair.

recopiant bêtement


J'espère que vous comprendrez pourquoi je n'aime pas ces genres
d'interventions. Je les trouve méprisant. Et ils le sont. Vous jugez et
ne semblez pas vous en rendre compte.


Je juge et je m'en rend compte. J'appelle un chat un chat. Faire un
copié-collé de 3 pages de chiffres juste pour dire "vous n'avez pas bien lu
ces 3 pages", c'est BETE. Et je reste poli parce que ça ne mérite pas plus.
C'est mon jugement, et j'estime avoir le droit de l'exprimer. Par contre ce
n'est pas méprisant, le jour où je serai méprisant, tu n'entendras plus
parler de moi et tu dormiras au chaud dans ma boîte à plonk. Si je prends la
peine de te répondre, c'est bien parce que tu me fait esquisser de temps en
temps un sourire, et c'est plutôt positif.

Non, les chiffres ne valent pas mille mots. Réfléchis un peu,


J'ai déjà plus que réfléchis, j'ai constaté. Si ça ne vaut pas mille
mots pour vous alors pour moi 'oui'. Si quelqu'un tente de m'expliquer un
calcul par du français, il se peut que je ne comprenne pas sa façon de
s'expliquer. Mais si on me montre juste le calcul lui-même, alors là,
d'un

seul coup d'oeil je peux comprendre sans même lire les explications.
Pourquoi serais-je le seul ainsi?


Je crois qu'on ne vit pas dans le même monde. Si quelqu'un écrit : "soit un
algorithme qui prend une suite de nombres E[i], en entrée, et qui effectue
la transformation S[i] = A.E[i+1] + B.E[i] + C.S[i-1]", c'est infiniment
plus clair que 3 lignes d'application numérique, non ? Tu peux aligner les
tableaux de chiffres, ça restera du bruit par rapport à une seule ligne
comme celle-ci (modulo les bonnes conditions sur i évidemment).

Je répépépépéte pour Raymond qui est manifestement un incompétent de
mauvaise fois en plus. OUI, le fait de ne pas connaître un mot de
vocabulaire montre ton incompétence en vocabulaire.


Alors, là vous débordez d'orgueil. J'aurais honte.


Je déborde d'orgueil. Et je n'ai pas honte.

Donc, si quelqu'un a le malheur de ne pas connaître tous les mots du
dictionnaire il est un incompétent? C'est ce que vous venez d'écrire. Et
si vous dite que vous parlez de la majorité des mots les plus utilisés et
non pas de tous, alors qui êtes-vous pour juger quel dialecte doit être
accepté? Ici au Québec, il y a plusieurs dialectes juste pour le
français.


Je le redis, que ça te rendre bien dans le crâne : dire que tu es
incompétent dans un domaine particulier n'est pas une insulte, n'est pas un
jugement de valeur. C'est une constatation ponctuelle, dans un contexte
particulier. Et l'incompétence n'est pas une tare, c'est l'état temporaire
qui précède la compétence. Enfin, dans le cas général, manifestement tu fais
le nécessaire pour être l'exception qui confirme la règle.

Il n'y a pas de honte,
il n'y a pas mort d'homme, on s'en remet, on peut vivre sans, on peut
progresser, mais en l'occurence on est incompétent. Cela ne devient une
tare
que quand on persiste à vouloir le rester.


À vouloir le RESTER? Il serait donc déjà une tare? Encore un autre
jugement.


Tu sais pas lire Raymond, ou tu es de mauvaise fois (bis). J'ai écrit "cela
ne devient une tare [d'être incompétent] que quand on persiste à vouloir le
rester". Tu veux que je rajoute le "[incompétent]" à la fin pour mieux
comprendre la phrase ? Ou c'est une forme d'ellipse qui te toutes façon t'es
à jamais hermétique ???

Si vous voulez savoir ce qu'est un taré alors lisez la bible et
vous verrez que vous n'avez pas à lancer la pierre à d'autres.


La Bible n'a rien à voir la dedans, et ce genre de sortie n'a rien à faire
ici. Enfin, quand on en est à ce genre de sortie, c'est que le Troll
commence à être mûr, prêt à cueillir...

Vous êtes
aveugle en jugeant de la sorte puisque vous ne connaissez pas
nécessairement

si les gens ont dans une certaine mesure une déficience intellectuel
concernant l'expression verbale ou écrite.


Effectivement je crois que ça commence à tellement creuver les yeux que ça
en devient effectivement aveuglant ;-)

Alors, il serait bon de ne pas
fixer de standard à votre propre hauteur pour juger autrui. Il y a des
gens

qui toutes leur vie auront de la difficulté à bien s'exprimer et qu'ils
auront fait 100 fois plus d'effort que vous même à s'exprimer verbalement
ou

par écrit. Ont-ils des comptes à vous rendre pour vous expliquer leur
déficience avant que vous les acceptiez tel qu'ils sont sans étaler tout
sur

la place publique? Voulez-vous les mettre de côté en les jugeant? Non.


Oui. Je ne les juge pas humainement, en tout cas, je n'ai pas de sentiment
personnel tout prêt à leur réserver. Par contre je les juge techniquement,
et j'ai un sentiment objectif tout cuit à leur proposer.

Alors, pourquoi me jugez-vous si vous ne me connaissez pas
personnellement.

Car ça fait déjà plusieurs qui me juge de la sorte sur ce forum. Vous
dois-je des comptes? Vous manquez d'expérience dans la vie ou bien vous
tourner autour de votre nombril sans réaliser la réalité de ce monde.


Tu devrais relire les contributions de ces "juges" : chacun y va -plutôt
positivement, dans un esprit taquin mais humain- de sa petite critique face
à ton manque de rigueur, et parfois de son petit conseil face à la vanité de
ta démarche. Il n'y a que dans ton regard que ces critiques (argumentées qui
plus est) et ces conseils (pertinents s'il en est !) se transforment en
agressivité et sont perçues comme des jugements négatifs. Tout le monde
n'est pas méchant Raymond. Par contre, à force de comprendre tout de
travers, n'importe qui l'est certainement à tes yeux.

J'espère que vous comprenez. Si oui, alors vous ne direz plus que j'écris
comme je parle, ni que ma foi est mauvaise. Tant mieux si vous êtes super
intelligent et si vous connaissez votre dictionnaire par coeur, je suis
bien

content pour vous. Mais de grâce gardez votre vanité pour vous. Je parle
non seulement pour moi mais au nom de tous ceux qui se retrouvent dans ce
que je dis.


Je comprends. On ne parle seulement pas de la même chose. Tu ne lis pas ce
que j'ai écrit, tu lis dans mon coeur, et ça c'est dur Raymond, c'est
vraiment trop injuste.

Pour en revenir à ton application
numérique (pardon, ton exemple sanguignolant), n'importe quel élève de
CP


qui n'aurait pas ta mauvaise fois se rend compte simplement en ouvrant
un


dictionnaire que deux mots considérés comme synonymes par le langage
courant
ne sont que très rarement absolument interchangeables,


Donc, si quelqu'un ne se rend pas compte de cela il serait de mauvaise
foi?

rigoureux. Or, que je sache, nous sommes ici dans le domaine de l'écrit,
il
n'y a pas lieu de mépriser ceux qui ne savent pas écrire, mais il faut à
tout le moins les encourager à progresser fissa-fissa.


Lisez plus haut ce que j'ai écris, et ne vous comparez pas à ceux que
vous ne voyez pas leur niveau intellectuel.


Raymond, Raymond, franchement, crois tu que quelqu'un dont le QI n'excède
qu'exceptionnellement le chiffre de la température anale [ (c) Pierre
Desproges ] serait capable de concevoir un algorithme de chiffrement ? Non ?
Bon. Donc si tu es bien l'auteur d'AllCrytation, si tu es bien le
contributeur qui déroule des calculs depuis quelques semaines ici, je n'ai
aucun doute à avoir sur ton nivau intellectuel. C'est donc bien de la
mauvaise fois.

Qui a dit que je ne respectait pas son vocabulaire ou son travail ???


Je parle de respecter le niveau de mon vocabulaire. C'est bien écrit.


Non. C'est mal écrit.

Oui bien sûr. D'ailleurs, c'est bien connu, les logiciels commerciaux
n'existeraient pas sans les bénévoles qui aident les développeurs.


Pas d'accord. Faut pas généraliser.


Des exemples ??? Pour une fois, ça manque de chiffre.


L'exemple est moi-même. Je n'ai pas toujours été aidé dans mes
logiciels. Faut donc pas généraliser. D'autres ont appris la
programmation

à l'école et ont dû s'acheter des livres et ont payé pour leurs cours.
Etc.


C'est de l'humour, c'est ça ? Non, vraiment, on ne parle jamais de la même
chose.

Je n'ai pas l'intention de continuer ce genre de discussion. Si vous
n'aimez pas ma classe alors lisez les gens de votre 'haute classe'.
J'espère que vous saisissez la leçon.


Ca fini toujours comme ça. "J'espère que vous saisissez la leçon". C'est une
phrase méprisante. Donc tu es méprisant. Donc, ça y es, tu es méprisable, et
ça y est, je te méprise, CQFD.

Bonne journée


Pareil,

--
JD




Avatar
Christophe HENRY

Hellô !


Regardez le code C bien crade de faignant (dixit Henry) que j'ai posté
ici.


Voici un code C normalement plus propre mais encore moins compréhensible.
Le trophé de l'OACC (Obfuscated Allcrypter Code Challenge) est à moi !


:~$ time ./casto
Recherche terminée
3201024 clés

real 0m12.851s
user 0m12.850s
sys 0m0.000s


Là, je déchante un peu. Mais j'arrive quand même à un score honorable :

$ time ./sax
nbCles : 3201024

real 2m31.112s
user 2m28.432s
sys 0m0.008s


Le code :

L'algorithme est récursif à deux niveaux : sur k1, k2... kn et sur le
parcours des valeurs de 0 à 255. Les tests d'arrêt peuvent être
quelconques.

====================================================================== #include <stdio.h>
#include <stdlib.h>

typedef unsigned int octet ; // int obligatoire pour le test %6 !!

// longueur des clairs et chiffrés. La clé a un de plus.
#define N 7
// Il n'y a qu'à décrire le clair (M) et le chiffre (C) ici
// Changer la constante N afin qu'elle corresponde au nombre de caractères.
octet M[N] = {100,100,100,100,100,100,100} ;
octet C[N] = {216,216,216,216,216,216,120} ;

int nbCles=0 ;

void afficheVecteur(octet *V, int longueur) {
int i ;
printf("[%d", V[0]) ;
for (i=1;i<longueur;i++) printf(",%d", V[i]) ;
printf("]n") ;
}

int f(octet M[], octet C[], octet K[], int i) {
return C[i-1] == (((K[i-1]+K[i]+M[i-1]+M[i])^K[i])+K[i-1])%256 ;
}

int g(octet *M, octet *C, octet K[], int i) {
return C[i-1] == (((K[i-1]+K[i]+M[i-1]+K[i])^K[i])+K[i-1])%256 ;
}


void algo(int i, int n, octet *K, octet *M, octet *C) {
octet *KK ;
if (K[i]<256) {
KK=malloc((n+1)*sizeof(octet)) ; memcpy(KK,K,(n+1)*sizeof(octet)) ;

if (0==i) {
algo(i+1,n,KK,M,C) ;
KK[i]++ ; algo(i,n,KK,M,C) ;
}
else if (i==n) {
if ( g(M,C,KK,i) ) {
nbCles++ ;
// afficheVecteur(KK, N+1) ;
// if (0==nbCles %10000) printf("%10dn", nbCles) ;
}
KK[i]++ ;
algo(i,n,KK,M,C) ;
} else {
if ( f(M,C,KK,i) ) algo(i+1,n,KK,M,C) ;
KK[i]+=1 ;
algo(i,n,KK,M,C) ;
}
free(KK) ;
} // if <256
} // algo

int main() {

int i ;
octet K[N+1] ; for (i=0;i<N+1;i++) K[i]=0 ;

algo(0,N,K,M,C) ;

printf("nbCles : %dn", nbCles) ;

return 0 ;
}
===============================================================
--
Christophe HENRY
(sans lkm)
GnuPG : 3922239E60036EC86BF7268A877C52AC 4883C02A

Avatar
Raymond H.
"Johann Dantant" a écrit dans
le message de news: 41e7b92a$0$7118$

Lisez plus haut ce que j'ai écris, et ne vous comparez pas à ceux que
vous ne voyez pas leur niveau intellectuel.


Raymond, Raymond, franchement, crois tu que quelqu'un dont le QI n'excède
qu'exceptionnellement le chiffre de la température anale [ (c) Pierre
Desproges ] serait capable de concevoir un algorithme de chiffrement ? Non
?
Bon. Donc si tu es bien l'auteur d'AllCrytation, si tu es bien le
contributeur qui déroule des calculs depuis quelques semaines ici, je n'ai
aucun doute à avoir sur ton nivau intellectuel. C'est donc bien de la
mauvaise fois.


Permettez-moi un petit ajout.

Si vous n'avez aucun doute concernant mon niveau intellectuel,
serait-il possible alors pour vous de respecter ce niveau, même si ce niveau
n'est pas à la hauteur dont vous espérez? Si ma façon d'écrire dans ce fil
n'est pas comme vous voudriez qu'elle soit, alors peut-être pourriez-vous
faire un certain effort pour comprendre mes écrits, comme je le fais aussi
pour d'autres. J'ai une façon d'écrire et j'écris comme je pense et non
comme je parle. Que voulez-vous? C'est ma façon d'être, et je m'applique
tout de même à essayer de me faire comprendre quand j'écris. Dans certains
messages j'y consacre beaucoup de temps pour les écrire et je les révise
pour voir si en me mettant à la place des autres cela est assez bien
expliqué. C'est ma façon selon mon degré de savoir et selon ma façon de
m'exprimer. Je m'applique donc à ce que mes écrits soient assez clairs pour
les autres. Le problème est peut-être qu'on a pas la même façon de
s'exprimer l'un l'autre, ou bien j'ai une façon de m'exprimer dont votre
cerveau n'arrive pas à suivre.

Si on peut se respecter là dessus ça ira mieux.


Ca fini toujours comme ça. "J'espère que vous saisissez la leçon". C'est
une
phrase méprisante. Donc tu es méprisant. Donc, ça y es, tu es méprisable,
et
ça y est, je te méprise, CQFD.



Ce n'est pas vraiment une phrase méprisante. J'aurais pu dire:
'J'espère que vous comprenez le petit enseignement (ou, ce) que j'essaie de
donner sur ce sujet'. Il n'y a aucun mot méprisable dans cette phrase.
Ici, au Québec, il y a des annonces télé qui parle de la violence verbale.
Et cette violence peut être du dénigrement verbale aussi subtile soit-elle.
Je devrais peut-être ignorer lorsque je constate ceci dans ces fils en
supposant que certain ne réalise pas la porter de certaines paroles.



Sur ce, passez une bonne journée et passons à autre chose si vous le voulez
bien.

r.h.


Avatar
Raymond H.
Merci à vous deux pour les démonstration de votre code.

Un petite question, car je vois que dans les bits vous y connaissez pas mal.
Avec un clair ayant été chiffré avec une clef de 128 (mais seulement avec du
xor), serait-il possible de trouver m à partir de k et de c ?

k= 123
mE6789

Donc, en ayant chiffré seulement de cette façon:
1 xor 4
2 xor 5
3 xor 6
1 xor 7
2 xor 8
3 xor 9

Ou bien, trouver m à partir de k et de c, est-il indéchiffrable
seulement si la clef est unique et de la même longueur que le clair?
Cela, en tenant compte que le chiffrage a été:
k= 123456
mE6789
1 xor 4
2 xor 5
3 xor 6
4 xor 7
5 xor 8
6 xor 9

a+
r.h.
5 6 7 8 9