& 15]; $bK65[$i] = $bK6[$i >> 4] << 4 | $bK5[$i & 15]; $bK43[$i] = $bK4[$i >> 4] << 4 | $bK3[$i & 15]; $bK21[$i] = $bK2[$i >> 4] << 4 | $bK1[$i & 15]; } function _f( $x ) { global $bK87; global $bK65; global $bK43; global $bK21; // $bK87[$x>>24 & 255] << 24 $x1 = $x->ShiftToRight(24); $x1 = $x1->BitwiseAND(255); $temp = $bK87[ (int)$x1->GetCount() ]; $x1 = new DWord(); $x1->SetValue( $temp, 0, 0, 0 ); $x1->ShiftToLeft( 24 ); debug( $x1->GetCount() ); // $bK65[$x>>16 & 255] << 16 $x2 = $x->ShiftToLeft(16); $x2 = $x2->BitwiseAND(255); $temp = $bK65[ $x2->GetCount() ]; $x2 = new DWord(); $x2->SetValue( $temp, 0, 0, 0 ); $x2->ShiftToLeft(16); // $bK43[$x>> 8 & 255] << 8 $x3 = $x->ShiftToRight(8); $x3 = $x3->BitwiseAND(255); $temp = $bK43[ $x3->GetCount() ]; $x3 = new DWord(); $x3->SetValue( $temp, 0, 0, 0 ); $x3->ShiftToLeft(8); // $bK21[$x & 255] $x4 = $x->BitwiseAND(255); $temp = $bK21[ $x4->GetCount() ]; $x4 = new DWord(); $x4->SetValue( $temp, 0, 0, 0 ); //$x = $bK87[$x>>24 & 255] << 24 | $bK65[$x>>16 & 255] << 16 | // $bK43[$x>> 8 & 255] << 8 | $bK21[$x & 255]; $res = $x1->BitwiseOR( $x2 ); $res = $res->BitwiseOR( $x3 ); $res = $res->BitwiseOR( $x4 ); return $res; } // ***************************************************************************** // Purpose GOST cryptography function // Inputs $in - 2 item of 32 values ( source data ) // $key - 8 item of 32 values ( key to encrypted ) // Remarks // Returns cyfered data function _gostCrypt( $in, $key ) { $n1 = $in[0]; $n2 = $in[1]; /* Instead of swapping halves, swap names each round */ $n2 = $n2->BitwiseXOR( _f($n1->Plus($key[0])) ); debug( $n1->GetCount() ); debug( $key[0]->GetCount() ); $n2 = _f($n1->Plus($key[0])); debug( $n2." = ".$n2->GetCount() ); debug("=========================== Cifer ============================"); debug( $n2->GetHTML_Representation() ); $byte1 = null; $byte2 = null; $byte3 = null; $byte4 = null; $n2->GetValue( $byte1, $byte2, $byte3, $byte4 ); debug( $byte1 ); debug( $byte2 ); debug( $byte3 ); debug( $byte4 ); debug("=============================================================="); $n1 = $n1->BitwiseXOR( _f($n2->Plus($key[1])) ); $n2 = $n2->BitwiseXOR( _f($n1->Plus($key[2])) ); $n1 = $n1->BitwiseXOR( _f($n2->Plus($key[3])) ); $n2 = $n2->BitwiseXOR( _f($n1->Plus($key[4])) ); $n1 = $n1->BitwiseXOR( _f($n2->Plus($key[5])) ); $n2 = $n2->BitwiseXOR( _f($n1->Plus($key[6])) ); $n1 = $n1->BitwiseXOR( _f($n2->Plus($key[7])) ); $n2 = $n2->BitwiseXOR( _f($n1->Plus($key[0])) ); $n1 = $n1->BitwiseXOR( _f($n2->Plus($key[1])) ); $n2 = $n2->BitwiseXOR( _f($n1->Plus($key[2])) ); $n1 = $n1->BitwiseXOR( _f($n2->Plus($key[3])) ); $n2 = $n2->BitwiseXOR( _f($n1->Plus($key[4])) ); $n1 = $n1->BitwiseXOR( _f($n2->Plus($key[5])) ); $n2 = $n2->BitwiseXOR( _f($n1->Plus($key[6])) ); $n1 = $n1->BitwiseXOR( _f($n2->Plus($key[7])) ); $n2 = $n2->BitwiseXOR( _f($n1->Plus($key[0])) ); $n1 = $n1->BitwiseXOR( _f($n2->Plus($key[1])) ); $n2 = $n2->BitwiseXOR( _f($n1->Plus($key[2])) ); $n1 = $n1->BitwiseXOR( _f($n2->Plus($key[3])) ); $n2 = $n2->BitwiseXOR( _f($n1->Plus($key[4])) ); $n1 = $n1->BitwiseXOR( _f($n2->Plus($key[5])) ); $n2 = $n2->BitwiseXOR( _f($n1->Plus($key[6])) ); $n1 = $n1->BitwiseXOR( _f($n2->Plus($key[7])) ); $n2 = $n2->BitwiseXOR( _f($n1->Plus($key[7])) ); $n1 = $n1->BitwiseXOR( _f($n2->Plus($key[6])) ); $n2 = $n2->BitwiseXOR( _f($n1->Plus($key[5])) ); $n1 = $n1->BitwiseXOR( _f($n2->Plus($key[4])) ); $n2 = $n2->BitwiseXOR( _f($n1->Plus($key[3])) ); $n1 = $n1->BitwiseXOR( _f($n2->Plus($key[2])) ); $n2 = $n2->BitwiseXOR( _f($n1->Plus($key[1])) ); $n1 = $n1->BitwiseXOR( _f($n2->Plus($key[0])) ); $out = array(); $out[0] = $n2; $out[1] = $n1; return $out; } function _gostDeCrypt( $out, $key ) { $n1 = $in[0]; $n2 = $in[1]; /* Instead of swapping halves, swap names each round */ $n2 = $n2->BitwiseXOR( _f($n1->Plus($key[0])) ); $n1 = $n1->BitwiseXOR( _f($n2->Plus($key[1])) ); $n2 = $n2->BitwiseXOR( _f($n1->Plus($key[2])) ); $n1 = $n1->BitwiseXOR( _f($n2->Plus($key[3])) ); $n2 = $n2->BitwiseXOR( _f($n1->Plus($key[4])) ); $n1 = $n1->BitwiseXOR( _f($n2->Plus($key[5])) ); $n2 = $n2->BitwiseXOR( _f($n1->Plus($key[6])) ); $n1 = $n1->BitwiseXOR( _f($n2->Plus($key[7])) ); $n2 = $n2->BitwiseXOR( _f($n1->Plus($key[7])) ); $n1 = $n1->BitwiseXOR( _f($n2->Plus($key[6])) ); $n2 = $n2->BitwiseXOR( _f($n1->Plus($key[5])) ); $n1 = $n1->BitwiseXOR( _f($n2->Plus($key[4])) ); $n2 = $n2->BitwiseXOR( _f($n1->Plus($key[3])) ); $n1 = $n1->BitwiseXOR( _f($n2->Plus($key[2])) ); $n2 = $n2->BitwiseXOR( _f($n1->Plus($key[1])) ); $n1 = $n1->BitwiseXOR( _f($n2->Plus($key[0])) ); $n2 = $n2->BitwiseXOR( _f($n1->Plus($key[7])) ); $n1 = $n1->BitwiseXOR( _f($n2->Plus($key[6])) ); $n2 = $n2->BitwiseXOR( _f($n1->Plus($key[5])) ); $n1 = $n1->BitwiseXOR( _f($n2->Plus($key[4])) ); $n2 = $n2->BitwiseXOR( _f($n1->Plus($key[3])) ); $n1 = $n1->BitwiseXOR( _f($n2->Plus($key[2])) ); $n2 = $n2->BitwiseXOR( _f($n1->Plus($key[1])) ); $n1 = $n1->BitwiseXOR( _f($n2->Plus($key[0])) ); $n2 = $n2->BitwiseXOR( _f($n1->Plus($key[7])) ); $n1 = $n1->BitwiseXOR( _f($n2->Plus($key[6])) ); $n2 = $n2->BitwiseXOR( _f($n1->Plus($key[5])) ); $n1 = $n1->BitwiseXOR( _f($n2->Plus($key[4])) ); $n2 = $n2->BitwiseXOR( _f($n1->Plus($key[3])) ); $n1 = $n1->BitwiseXOR( _f($n2->Plus($key[2])) ); $n2 = $n2->BitwiseXOR( _f($n1->Plus($key[1])) ); $n1 = $n1->BitwiseXOR( _f($n2->Plus($key[0])) ); $out = array(); $out[0] = $n2; $out[1] = $n1; return $out; } ?>ERROR: Couldn't find language file!