Bonjour à tous,

je suis à la recherche d'un algo (ou d'idée d'algos) pour signer un tableau de quelques octets (<128).

Le problème : cet algo doit pouvoir tourner sur un tout petit micro-contrôleur 8b à 8 MHz, et donc n'utiliser que des opérations sur des bytes (si possible) avec pas trop de multiplications (et encore moins de divisions ou de float !!!)

j'avais pensé à un truc tout bête genre une clef de 6 octets (6 octets, ça m'arrange) sur laquelle je XOR mes données, en pseudo-code/C :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
fonction calcule_signature( byte data[], byte len_data )
{
  byte clef[6] = { ma clef secrète de 6 octets };
 
  for( i=0 ; i<len_data ; i++ )
  {
    clef[i%6] = clef[i%6] XOR data[i];
  }
 
  return clef;
Ou un truc dans le genre ...

Je ne cherche pas un algo hyper pointu, mais pas non plus un algo qui est cassé en 2 minutes avec un freeware trouvé sur le net ...

Par avance, merci de vos lumières.

[Edit] autre idée : un tableau de 256 octets aléatoires (en dur dans le code) qui me sert de germe pour la clef de 6 octets :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
fonction calcule_signature( byte data[], byte len_data )
{
  byte dico[256] = { dico aléatoire ... };
 
  byte clef[6];
 
  for( i=0 ; i<6 ; i++ )
  {
    clef[i] = dico[ data[i] ];
  }
 
  for( i=0 ; i<len_data ; i++ )
  {
    clef[i%6] = clef[i%6] XOR data[i];
  }
 
  return clef;
C'est peut être déjà un poil mieux, non ?