OVH Cloud OVH Cloud

Algorithme DES/DEA

15 réponses
Avatar
alt3
Bonjour à tous,

Je dois (professionnellement) implémenter l'algo de cryptage DES
(options: ECB, No Padding), avec le langage C.

J'ai lu plusieurs documentations (celle du NIST - officielle, plusieurs
'tuto' plus ou moins fiables trouvés sur internet, et le bouquin de
Bruce Schneier ' cryptographie appliquée').

On m'a fourni un programme en Java (utilisant les bibliothèques Java),
pour pouvoir comparer mon implémentation par rapport à une
implémentation fiable.

Et évidemment, je n'ai jamais le même résultat que le programme Java.

Ma question est donc la suivante:

Y-a-t'il quelqu'un ici que souhaite passer un peu de temps avec moi,
pour que j'explique mon algorithme ?
J'en suis à ma quatrième ou cinquième implémentation, et je fais
toujours choux blanc.
Cette personne pourrait me rendre un grand service en détectant l'une ou
l'autre erreur que j'aurais pu commettre ...

Cordialement, alt3.

5 réponses

1 2
Avatar
Bluedeep
"alt3" escribió en el mensaje
news:c277rh$ofh$
| Je n'ai peut-e^tre pas été clair, permettez moi de préciser la chose:
| Le soft (en C) que je développe se connecte en socket a` un serveur Java,
| s'ensuit un échange basé sur un protocole 'maison'.
|
| Certaines données sont cryptée, en DES, par le serveur.
| Il faut donc que je décode ces données coté clients, mais je n'ai ni OS,
| ni librairies disponibles:

Ni OS ?? vous gravez le prog au burin ? ;-))

| je dois donc calquer mon implémentation de DES sur celle du serveur.
|
| Et en effet, le serveur utilise javax.crypto, pour DES, avec No Padding,
| en mode ECB. Et ce sont bien les seules informations que l'on peut
| obtenir de java.sun.com: ensuite, on est redirigé vers les docs du NIST,
| que j'ai parcouru en long, en large et en travers.

Oullalala ...
Si vous avez les sources de l'implementation java, le mieux ets peut être de
la transcrire en C++ (dans ce sens c'est assez facile). Sinon, je vois des
soucis se pointer à l'horizon (comme vous dites ne pas avoir d'OS - je
suppose donc que vous écrivez un programme en C qui sera compilé via un
cross-compiler sur une autre machine - et porter du Java en C non objet est
pour le moins casse pied, en revanche traduire du java en C++ est assez
facile - pas l'inverse)

Sinon, je n'y connais pas grand chose en crypto, mais je ne comprends pas
comment vous recevez la clef de déchiffrage

F.
Avatar
alt3
wrote:
Il existe 1000 et une implémentations de DES en C et d'autres languages.
Tout le problèmes est alors de traduire ceci en Java, si le code Java
n'existe pas déjà...

Il suffit de savoir chercher avec google.
DES Java crypto

...
http://javaalmanac.com/egs/javax.crypto/DesString.html

Il y a une extension de Java. "Javax.crypto"...

Voila, tout est dit...

Maintenand, reste à instancier les classes avec les bons paramètres pour
sélectionner les options, etc...


Je n'ai peut-e^tre pas été clair, permettez moi de préciser la chose:
Le soft (en C) que je développe se connecte en socket a` un serveur Java,
s'ensuit un échange basé sur un protocole 'maison'.

Certaines données sont cryptée, en DES, par le serveur.
Il faut donc que je décode ces données coté clients, mais je n'ai ni OS,
ni librairies disponibles:
je dois donc calquer mon implémentation de DES sur celle du serveur.

Et en effet, le serveur utilise javax.crypto, pour DES, avec No Padding,
en mode ECB. Et ce sont bien les seules informations que l'on peut
obtenir de java.sun.com: ensuite, on est redirigé vers les docs du NIST,
que j'ai parcouru en long, en large et en travers.

Avatar
alt3
Bluedeep wrote:

"alt3" escribió en el mensaje
news:c277rh$ofh$
| Je n'ai peut-e^tre pas été clair, permettez moi de préciser la chose:
| Le soft (en C) que je développe se connecte en socket a` un serveur Java,
| s'ensuit un échange basé sur un protocole 'maison'.
|
| Certaines données sont cryptée, en DES, par le serveur.
| Il faut donc que je décode ces données coté clients, mais je n'ai ni OS,
| ni librairies disponibles:

Ni OS ?? vous gravez le prog au burin ? ;-))

| je dois donc calquer mon implémentation de DES sur celle du serveur.
|
| Et en effet, le serveur utilise javax.crypto, pour DES, avec No Padding,
| en mode ECB. Et ce sont bien les seules informations que l'on peut
| obtenir de java.sun.com: ensuite, on est redirigé vers les docs du NIST,
| que j'ai parcouru en long, en large et en travers.

Oullalala ...
Si vous avez les sources de l'implementation java, le mieux ets peut être de
la transcrire en C++ (dans ce sens c'est assez facile). Sinon, je vois des
soucis se pointer à l'horizon (comme vous dites ne pas avoir d'OS - je
suppose donc que vous écrivez un programme en C qui sera compilé via un
cross-compiler sur une autre machine - et porter du Java en C non objet est
pour le moins casse pied, en revanche traduire du java en C++ est assez
facile - pas l'inverse)

Sinon, je n'y connais pas grand chose en crypto, mais je ne comprends pas
comment vous recevez la clef de déchiffrage

F.




C'est bien ça :)
De plus nous n'avons pas de support C++ pour cette plate forme :/

Avatar
alt3
Voilà, je poste pour remercier chaque intervenant.

J'ai en effet trouvé la solution à mon problème grâce aux documents
fournis, ainsi qu'aux différentes remarques.

Cordialement, alt3.
Avatar
pburnand0-news
alt3 wrote:

wrote:
Il existe 1000 et une implémentations de DES en C et d'autres languages.
Tout le problèmes est alors de traduire ceci en Java, si le code Java
n'existe pas déjà...

Il suffit de savoir chercher avec google.
DES Java crypto

...
http://javaalmanac.com/egs/javax.crypto/DesString.html

Il y a une extension de Java. "Javax.crypto"...

Voila, tout est dit...

Maintenand, reste à instancier les classes avec les bons paramètres pour
sélectionner les options, etc...


Je n'ai peut-e^tre pas été clair, permettez moi de préciser la chose:
Le soft (en C) que je développe se connecte en socket a` un serveur Java,
s'ensuit un échange basé sur un protocole 'maison'.

Certaines données sont cryptée, en DES, par le serveur.
Il faut donc que je décode ces données coté clients, mais je n'ai ni OS,
ni librairies disponibles:
je dois donc calquer mon implémentation de DES sur celle du serveur.

Et en effet, le serveur utilise javax.crypto, pour DES, avec No Padding,
en mode ECB. Et ce sont bien les seules informations que l'on peut
obtenir de java.sun.com: ensuite, on est redirigé vers les docs du NIST,
que j'ai parcouru en long, en large et en travers.


Ok, alors toute la question est de trouver un code source en C qui
implemente l'algo DES.

Rien de plus facile:
recherche www.google.com:
DES encryption C source

Et je suis tombé par exemple sur:
http://www.cypherpunks.to/~peter/cl31.zip

Le source est fourni. Il reste à extraire ce dont tu as besoin et le mettre
dans un fichier. Je n'ai pas regardé en détail, mais il y a dans cette
archive un fichier appelé "desecb.c". Tu auras aussi probablement besoin
de "deskey.c" et d'autres fichiers...

Voilà...


1 2