@@ -147,6 +147,14 @@ class DES extends Base
147147 */
148148 var $ keys ;
149149
150+ /**
151+ * Key Cache "key"
152+ *
153+ * @see self::setupKey()
154+ * @var array
155+ */
156+ var $ kl ;
157+
150158 /**
151159 * Shuffle table.
152160 *
@@ -681,14 +689,14 @@ function _processBlock($block, $mode)
681689 {
682690 static $ sbox1 , $ sbox2 , $ sbox3 , $ sbox4 , $ sbox5 , $ sbox6 , $ sbox7 , $ sbox8 , $ shuffleip , $ shuffleinvip ;
683691 if (!$ sbox1 ) {
684- $ sbox1 = array_map (" intval " , $ this ->sbox1 );
685- $ sbox2 = array_map (" intval " , $ this ->sbox2 );
686- $ sbox3 = array_map (" intval " , $ this ->sbox3 );
687- $ sbox4 = array_map (" intval " , $ this ->sbox4 );
688- $ sbox5 = array_map (" intval " , $ this ->sbox5 );
689- $ sbox6 = array_map (" intval " , $ this ->sbox6 );
690- $ sbox7 = array_map (" intval " , $ this ->sbox7 );
691- $ sbox8 = array_map (" intval " , $ this ->sbox8 );
692+ $ sbox1 = array_map (array ( $ this , ' safe_intval ' ) , $ this ->sbox1 );
693+ $ sbox2 = array_map (array ( $ this , ' safe_intval ' ) , $ this ->sbox2 );
694+ $ sbox3 = array_map (array ( $ this , ' safe_intval ' ) , $ this ->sbox3 );
695+ $ sbox4 = array_map (array ( $ this , ' safe_intval ' ) , $ this ->sbox4 );
696+ $ sbox5 = array_map (array ( $ this , ' safe_intval ' ) , $ this ->sbox5 );
697+ $ sbox6 = array_map (array ( $ this , ' safe_intval ' ) , $ this ->sbox6 );
698+ $ sbox7 = array_map (array ( $ this , ' safe_intval ' ) , $ this ->sbox7 );
699+ $ sbox8 = array_map (array ( $ this , ' safe_intval ' ) , $ this ->sbox8 );
692700 /* Merge $shuffle with $[inv]ipmap */
693701 for ($ i = 0 ; $ i < 256 ; ++$ i ) {
694702 $ shuffleip [] = $ this ->shuffle [$ this ->ipmap [$ i ]];
@@ -1252,9 +1260,9 @@ function _setupKey()
12521260 $ pc2mapd3 [($ d >> 8 ) & 0xFF ] | $ pc2mapd4 [ $ d & 0xFF ];
12531261
12541262 // Reorder: odd bytes/even bytes. Push the result in key schedule.
1255- $ val1 = ( $ cp & intval (0xFF000000 )) | (($ cp << 8 ) & 0x00FF0000 ) |
1263+ $ val1 = ( $ cp & $ this -> safe_intval (0xFF000000 )) | (($ cp << 8 ) & 0x00FF0000 ) |
12561264 (($ dp >> 16 ) & 0x0000FF00 ) | (($ dp >> 8 ) & 0x000000FF );
1257- $ val2 = (($ cp << 8 ) & intval (0xFF000000 )) | (($ cp << 16 ) & 0x00FF0000 ) |
1265+ $ val2 = (($ cp << 8 ) & $ this -> safe_intval (0xFF000000 )) | (($ cp << 16 ) & 0x00FF0000 ) |
12581266 (($ dp >> 8 ) & 0x0000FF00 ) | ( $ dp & 0x000000FF );
12591267 $ keys [$ des_round ][self ::ENCRYPT ][ ] = $ val1 ;
12601268 $ keys [$ des_round ][self ::DECRYPT ][$ ki - 1 ] = $ val1 ;
@@ -1324,14 +1332,14 @@ function _setupInlineCrypt()
13241332 // Init code for both, encrypt and decrypt.
13251333 $ init_crypt = 'static $sbox1, $sbox2, $sbox3, $sbox4, $sbox5, $sbox6, $sbox7, $sbox8, $shuffleip, $shuffleinvip;
13261334 if (!$sbox1) {
1327- $sbox1 = array_map("intval" , $self->sbox1);
1328- $sbox2 = array_map("intval" , $self->sbox2);
1329- $sbox3 = array_map("intval" , $self->sbox3);
1330- $sbox4 = array_map("intval" , $self->sbox4);
1331- $sbox5 = array_map("intval" , $self->sbox5);
1332- $sbox6 = array_map("intval" , $self->sbox6);
1333- $sbox7 = array_map("intval" , $self->sbox7);
1334- $sbox8 = array_map("intval" , $self->sbox8); '
1335+ $sbox1 = array_map(array($self, "safe_intval") , $self->sbox1);
1336+ $sbox2 = array_map(array($self, "safe_intval") , $self->sbox2);
1337+ $sbox3 = array_map(array($self, "safe_intval") , $self->sbox3);
1338+ $sbox4 = array_map(array($self, "safe_intval") , $self->sbox4);
1339+ $sbox5 = array_map(array($self, "safe_intval") , $self->sbox5);
1340+ $sbox6 = array_map(array($self, "safe_intval") , $self->sbox6);
1341+ $sbox7 = array_map(array($self, "safe_intval") , $self->sbox7);
1342+ $sbox8 = array_map(array($self, "safe_intval") , $self->sbox8); '
13351343 /* Merge $shuffle with $[inv]ipmap */ . '
13361344 for ($i = 0; $i < 256; ++$i) {
13371345 $shuffleip[] = $self->shuffle[$self->ipmap[$i]];
0 commit comments