Elderan: 128 Bit Schlüssel erzeugen

Beitrag lesen

Moin

Existiert dazu ein gängiger Algorithmus?

Naja soschwer ist es auch nicht ;)
Es kommt immer auf die Key schedule des Algorithmus an.

Ich denke mal du programmierst für 32 Bit Plattformen, ich habe es wie folgt gelöst:

Key: abcdefghijklmnop (16 Byte = 128 Bit)

Key in 4 Byte (32 Bit) unterteilen:
Key: abcd efgh ijkl mnop

Dann die Strings in Integer umrechnen:
a<<24+b<<16+c<<8+d
Dabei wird a,b,c,d durch deren ASCII Code ersetzt, also
97<<24+98<<16+99<<8+100.

Jetzt hast du 4 mal 32 Bit Integer. Anstatt einen String kannst du den User natürlich auch 4 mal einen 32 Bit Integer (als hexadezimal) eingeben lasse, dann enfällt das.

Also Schleife in C sieht das wie folgt aus:
for(i=0;i<4;i++)
     {
     k[i] = (key[i*4]<<24)+(key[i*4+1]<<16)+(key[i*4+2]<<8)+(key[i*4+3]);
     }
Dabei ist key[] das String-Array, und k[] ist das 32 Bit Integer.

So der nächste Schritt ist bei AES w[0],w[1],w[2],w[3] die vier 32 Bit Werte zuzuweisen.

Komplett in PHP sieht es so aus:

  
function key($string) {  
$w = array();  
$w = str2long($string); //$key in 4 in 32 Bit Werte aufteilen  
$w[0] = $key[0]; //Die ersten 4 $w Elemente sind die 4x32 Bit werden  
$w[1] = $key[1];  
$w[2] = $key[2];  
$w[3] = $key[3];  
  
for($i=4;$i<44;$i++)  
  {  
  $temp = $w[$i-1];  
  
  if($i%4==0) //Vielfaches von 4  
     {  
     //$temp in Bytes zerlegen  
     $t2 = array();  
     $t2[3] = $temp & 0xFF;  
     $t2[2] = $temp>>8 & 0xFF;  
     $t2[1] = $temp>>16 & 0xFF;  
     $t2[0] = $temp>>24 & 0xFF;  
  
     $t2 = array($t2[1],$t2[2],$t2[3],$t2[0]); //RotWord: Rotat the Bytes/Array-Elements left  
     $t2 = SubWord($t2,0); //Funktion  
     $t2[0] ^= Rcon($i>>2); //Rcon ist eine Funktion  
  
     $temp = $t2[3]+($t2[2]<<8)+($t2[1]<<16)+($t2[0]<<24);  
     }  
  
   $w[$i] = $w[$i-4]^$temp;  
   $j++;  
   }  
  
return $w; //$w wird als Key für die einzelnen Runden benutzt.  
}  

(Dieser Funktion wurde mit offizielle&inoffizielle Testvektor positiv getestet)

MFG Elderan

0 47

128 Bit Schlüssel erzeugen

sp7
  • programmiertechnik
  1. 0
    Elderan
    1. 0
      Sven Rautenberg
      1. 0
        Alexander Brock
        1. 0
          Elderan
          1. 0
            Christoph Zurnieden
            1. 0
              Alexander Brock
            2. 0
              Elderan
              1. 0
                Christoph Zurnieden
                1. 0
                  Elderan
                  1. 0
                    Christoph Zurnieden
                    1. 0
                      Elderan
                      1. 0
                        Christoph Zurnieden
                        1. 0
                          Christian Kruse
                          1. 0
                            Christoph Zurnieden
                            1. 0
                              Christian Kruse
                        2. 0
                          Elderan
                          1. 0
                            Christoph Zurnieden
                            1. 0
                              Alexander Brock
                              1. 0
                                Christoph Zurnieden
                                1. 0
                                  Christian Kruse
                                  1. 0
                                    Elderan
                                    1. 0
                                      Christian Kruse
                                      1. 0
                                        Elderan
                                        1. 0
                                          Christian Kruse
                                          1. 0
                                            Elderan
                                            1. 0
                                              Christian Kruse
                                              1. 0
                                                Alexander Brock
                                                1. 0
                                                  Christoph Zurnieden
                                                  1. 0
                                                    Alexander Brock
                                                  2. 0
                                                    Henryk Plötz
                                                    1. 0
                                                      Christoph Zurnieden
                                                2. 0
                                                  Christoph Zurnieden
                                                  1. 0
                                                    Alexander Brock
                                                    1. 0
                                                      Christoph Zurnieden
                                                      1. 0
                                                        Alexander Brock
                                                        1. 0
                                                          Christoph Zurnieden
                                        2. 0
                                          Christoph Zurnieden
                                      2. 0
                                        Henryk Plötz
                                        1. 0
                                          Christoph Zurnieden
                                    2. 0
                                      Christoph Zurnieden
                                      1. 0
                                        Henryk Plötz
                                        1. 0
                                          Christoph Zurnieden
                            2. 0
                              Elderan
                              1. 0
                                Christoph Zurnieden
              2. 0
                Christian Kruse
    2. 0
      Henryk Plötz